我们先假设排序工作是在内存中完成的,也就是说数据量小于几百万,这称为内部排序。最后再考虑大量数据时的排序,也就是外部排序。
对内部排序的研究将得出结论:
- 存在几种容易 的算法 以O(N2)完成排序,如插入排序。
- shell排序很简单,以o(N2)(这里是小o)完成排序,在实践中很有效果。
- 有一些复杂的以O(NlogN)完成排序。
- 任何通用的排序算法均要Ω(NlogN)次比较。
一、插入排序
由N-1次排序组成,利用了这样的一个事实:已经位置0到 p-1上的元素已经处理排序的状态。在第p次比较时,我们将位置p上的元素向左移动,直到它在前p+1个元素中找到正确 的位置。位置p上元素保存于
tmp,而前面 的更大的元素向右移动 一个位置。与二叉堆实现时用了相同的技巧。
时间: 2024-11-08 15:24:12