Update 需排序方法的算法或场景

master
pmkfqw2gu 4 years ago
parent 2b8252ce2c
commit bb8b7dbf17

@ -1 +1,30 @@
二、需排序方法的算法或场景
二、需排序方法的算法或场景
冒泡排序
(一般在学习的时候作为理解排序原理的时候使用,规模比较小的时候应用冒泡排序,主要应用于教学,在实际应用中一般不会使用。)
插入排序
(如果大部分数据距离它正确的位置很近或者近乎有序,例如银行的业务完成的时间。如果是这样的话,插入排序是更好的选择)
选择排序
(由于运行时间和输入无关,数据移动最少。故当数据量较小的时候适用。)
希尔排序
(更高效,适合数据稍多)
堆排序
(适合于数据量非常大的场合(百万数据),堆排序不需要大量的递归或者多维的暂存数组。这对于数据量非常巨大的序列是合适的。比如超过数百万条记录,因为快速排序,归并排序都使用递归来设计算法,在数据量非常大的时候,可能会发生堆栈溢出错误)
快速排序
(快速排序是最快的通用排序算法,在大多数实际情况中,快速排序是最佳选择。)
归并排序
需要稳定,空间不是很重要,或是依赖于数组的随机存储,或是使用链表存储的
)
计数排序
(需要占用大量空间,它仅适用于数据比较集中的情况。比如 [0100][1000019999] 这样的数据。)
桶排序
当范围已经知道,而且空间不是很重要的情况下)
基数排序
(排序的对象的数目 和 排序对象的最大值之间相差不多时)
总结:
若n较小(如n≤50),可采用直接插入或直接选择排序。
     当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。
若文件初始状态基本有序(指正序),则应选用直接插人、冒泡或随机的快速排序为宜;
若n较大则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。
    2快速排序是目前基于比较的内部排序中被认为是最好的方法当待排序的关键字是随机分布时快速排序的平均时间最短
     堆排序所需的辅助空间少于快速排序,并且不会出现快速排序可能出现的最坏情况。这两种排序都是不稳定的。
     若要求排序稳定,则可选用归并排序。
Loading…
Cancel
Save