Insertion_Selection_Exchange_Merge Sort 算法总结:扬长避短
1.总结
| 类别 | 排序方法 | 时间复杂度 | 空间复杂度 | 稳定性 | |
| 平均情况情况 | |||||
| 插入排序 | 直接插入 | O(n^2) | O (n) | O(n^2) | 不稳定 |
| 选择器 | 你O(n^2) | O(n^2) | O( 1) | 不稳定 | |
| 堆排序 | OO(nlogn)n O (nlogn) | o (1) | 不稳定 | ||
| 交换sortbubble Sortt | 2) | o (n) | 2) | O(1) | 稳定 |
| 快速排序 | O(nlogn) | O(nlogn) | )O(n^ 2) 不稳定 | ||
| 归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | 稳定。每种类型对数据的适用性和提示 选择一些比较有特点、有代表性的排序算法 快速排序算法效率体现在序列越乱,效率越高。如果数据趋于有序状态(无论是顺序还是逆序),就会退化为冒泡排序。如果数据是逆序完整的,快速排序会消耗很多时间,所以有些OJ快速排序模板测试题不能直接写来通过快速排序【癌症数据,极大的完整逆序数据】。您可以尝试使用 rand() 生成扰乱一般数据的随机数,然后使用它。快速排序可以大大减少运行时间。 直接引入排序具有稳定、速度快的优点。缺点是比较越少,插入点之后移动的数据就越多。特别是当数据量很大时,需要移动大量的数据。 堆排序是一种相对复杂的排序。我们可以从中得到更深入的学习。例如,如果有一个问题需要从n条数据中选择或排序前k条数据,我们可以使用堆排序的思想,而不是对所有数据进行排序。 n是排序的并且只对前k个数据起作用,这个思想非常重要。 山排序的主要操作是比较而不是交换,因此在小数组的情况下比快速排序和堆排序要快,但在涉及大量数据时仍然不如快速排序。 对于大多数排序来说,当数据有序时,没有办法立即停止。如果预处理数据不是很大,可以设置一个标志,当数据完全有序时强制立即退出。排序达到减少运行时间的效果。当然,预处理数据在总执行步骤中所占的比例也不容易太大。比如总共执行100次,那么执行95次就已经完成序列了,就浪费了5个周期,像这样。标记 3。发散思维 上面我们了解了不同排序的应用以及优缺点。没有一种排序是完美的,所以我们最好的办法就是扬长避短,所以请设计。 1 算法可以通过一次遍历来主动探索数据情况。什么样的排序最合适? |
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网