各种排序应用场合

xiaoxiao2021-02-28  64

时间复杂度

O(n*n)

插入排序、选择排序和冒泡排序

O(nlogn)

快速排序、堆排序和归并排序

影响排序效果的因素

待排序的数据规模关键字的结构及其初始状态稳定性的要求语言工具的条件存储结构时间和辅助空间复杂度

应用场景:

若n较小(数据规模较小),插入排序或选择排序较好若数据初始状态基本有序(正序),插入、冒泡或快速排序为宜若n较大,则采用时间复杂度为O(nlogn)的排序方法:快速排序或堆排序快速排序是目前基于比较的排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短; 堆排序所需的辅助空间少于快速排序,并且不会出现快速排序可能出现的最坏情况。这两种排序都是不稳定的。

快速排序最坏情况:时间复杂度是O(n*n)

快速排序的时间性能取决于快速排序的递归深度,可以用递归树来描述递归算法的执行情况 - 在关键字已经基本有序的情况下(正序或者逆序),每次划分都只得到一个比上一次划分少一个记录的子序列,此时需要执行n-1次递归调用,且第i次划分需要经过n-i次关键字的比较才能找到第i个记录,比较次数达到(n(n-1))/2,最终其时间复杂度为O(n*n)

转载请注明原文地址: https://www.6miu.com/read-31677.html

最新回复(0)