考研数据结构——内部排序算法的比较和应用

各种内部排序算法的性质比较

算法 最好情况 最坏情况 平均情况 空间复杂度 稳定性
直接插入排序 O(n) O(n2) O(n2) O(1) 稳定
冒泡排序 O(n) O(n2) O(n2) O(1) 稳定
简单选择排序 O(n2) O(n2) O(n2) O(1) 不稳定
希尔排序 O(1) 不稳定
快速排序 O(nlog2n) O(nlog2n) O(n2) O(log2n) 不稳定
堆排序 O(nlog2n) O(nlog2n) O(nlog2n) O(1) 不稳定
二路归并排序 O(nlog2n) O(nlog2n) O(nlog2n) O(n) 稳定
基数排序 O(d(n+r)) O(d(n+r)) O(d(n+r)) O(r) 稳定

各种内部排序算法的应用

关键字位置问题

直接插入排序、折半插入排序:在最后一趟排序前,没有一个关键字到达其最终位置
快速排序:每一趟排序后有一个关键字到达最终位置
归并排序:在一次排序结束后不一定能选出一个关键字放到其最终位置上
希尔排序:不能保证每趟排序至少能将一个关键字放到其最终位置上

适用情况

直接插入排序、冒泡排序:适用于序列基本有序的情况
快速排序:待排序列越接近无序,算法效率越高
简单选择排序、归并排序:执行次数与初试序列无关
堆排序:适合关键字数很多的情况
基数排序:适合序列中关键字很多,但组成关键字的取值范围较小的情况

欢迎补充~~~

猜你喜欢

转载自www.cnblogs.com/liuliang1999/p/13197333.html