排序算法C++版的介绍比较
插入排序:
-
直接插入排序
-
希尔排序
交换排序:
-
起泡排序
-
快速排序
选择排序:
-
简单选择排序
-
堆排序
归并排序:
- 二路归并排序(递归和非递归)
分配排序:
-
桶排序
-
基数排序
比较:
- 时间复杂度
由图可知,在最好情况下,直接插入排序和起泡排序最快;在平均情况下,快速排序最快;在最坏情况下,堆排序和归并排序最快。
-
空间复杂度
归并排序 O(n) < 快速排序 O(log2 N) ~ O(n) < 基数排序 O(m) < 其他 O(1)
-
稳定性
稳定的:直接排序、起泡排序、归并排序和基数排序
不稳定的:希尔排序,快速排序、简单选择排序和堆排序
-
算法简单性
简单的:直接插入排序、简单选择排序、起泡排序和桶排序
改进的:希尔排序、堆排序、快速排序、归并排序和基数排序
-
待排序的记录个数n的大小
n越小,采用简单排序算法,n越大,选择改进的排序算法
-
记录本身信息量的大小
信息量越大,对记录移动次数较多的算法不利。
-
关键码的分布情况
太多字了,懒得敲,需要的时候自然会知道。