您的位置:首页 > 其它

排序算法基本思想

2015-06-17 14:54 225 查看
内部排序:全部待排序记录都可以同时调入内存进行的排序。

外部排序:待排序记录的数量太大,以致无法将其同时调入内存,尚需访问外存的排序过程。

排序中的基本操作:
1. 比较关键字大小 (对大多数排序算法是必须的)
2. 移动记录 (可通过改变记录的存储方式避免)

待排序记录的存储方式:
1. 存储在地址连续的一组存储单元中,记录之间的次序由存储位置决定,排序必须移动记录;
2. 存在静态链表中,记录之间的次序关系由指针指示,排序不同移动记录,仅需修改指针;(链表排序)
3. 待排序记录本身存储在一组地址连续的存储单元内,同时附设一个指示记录存储位置的地址向量,排序过程中不移动记录,而移动指向向量中这些记录的地址,在排序结束后,再按照地址向量中的值调整记录的存储位置。(地址排序)

内部排序算法按依据的原则不同分类:
插入排序、交换排序、归并排序、选择排序、基数排序

排序算法的评价标准:
1. 时间开销 (最重要的开销,可以用比较和移动次数衡量)
2. 附加空间



排序方法平均时间复杂度最好情况时间复杂度最坏情况时间复杂度空间复杂度稳定性
插入排序直接插入O(n2)O(n)O(n2)O(1)稳定
折半插入O(n2)O(1)稳定
希尔排序O(n1.3)O(1)不稳定
交换排序冒泡排序O(n2)O(n)O(n2)O(1)稳定
快速排序O(nlogn)O(n2)O(logn)不稳定
选择排序简单选择排序O(n2)O(1)稳定
堆排序O(nlogn)O(1)不稳定
归并排序2-路归并O(nlogn)O(n)稳定
基数排序是稳定的内排方法,所有时间复杂度为O(N2)的简单排序算法也是稳定的,而快排、堆排序和希尔排序等时间性能较好的排序算法是不稳定的。堆排序是一种稳定的排序算法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: