读书人

哪种排序最快,该怎么处理

发布时间: 2012-03-17 19:06:28 作者: rapoo

哪种排序最快
堆排序法快,还是快速排序法快?

[解决办法]
http://blogger.org.cn/blog/more.asp?name=njucs&id=3950
[解决办法]
请参考维基百科
http://zh.wikipedia.org/wiki/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95
[解决办法]
一般用快速排序算法。有一种改进的快速排序算法,能克服快速排序最坏情况下O(n^2)的缺陷。堆排序虽然最坏情况下是O(nlogn),但输入几乎有序时,堆排序仍然需要较大的时间代价,建堆过程可以发现。
另外,堆排序O(nlogn)前面的系数大于快速排序的稀疏。因此大多数情况下,堆排序比快速排序和希尔排序要慢。
另外,还有各种加速的对排序算法和树排序算法。
[解决办法]
这个好像和要求排序的东西的顺序有关!
[解决办法]
快速排序 比较快!
[解决办法]
请翻看数据结构教材。。。
[解决办法]
快排发生的交换会跨元素,是不稳定排序。
最坏的情况,就是每个小分块选定一个元素左右游走完,都只分出一个块。

可以改进快排,考虑不要每次都抽取第一个元素,向左右游走,每次都使用一个rand来随机选择一个初始元素。

感觉堆排应该比快排慢一点。

以前看过一篇实验,统计各排序方法的时间效率的。

其实讨论这个意义不大,因为堆排和快排本来就是基于不同思路,它们可以根据不同情况使用。

比如几万个数里,要你找出最大的几个数,这个时候堆排的特点就出来了。


[解决办法]
这要看你排序的元素的多少啊!很少的情况下没啥差别的。。。
[解决办法]
貌似数据结构书上对这些算法有比较的,这还跟数据的存储顺序有关
[解决办法]
快速排序。顶起来。分治思想简直太经典了。
[解决办法]
小于1000个元素,冒泡排序
小于100000个元素,快速排序
小于10000000个元素,放数据库里面,建索引(B+树),输出排序结果。
大于10000000个元素,归并排序,外部排序,哈希排序,……
在一个排好序的序列里面插入几个元素并保持原顺序,插入排序。

读书人网 >C语言

热点推荐