Code前端首页关于Code前端联系我们

Insertion_Selection_Exchange_Merge Sort 算法总结:扬长避短

terry 2年前 (2023-09-27) 阅读数 77 #数据结构与算法

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前端网发表,如需转载,请注明页面地址。

热门