排序算法的学习
算法的稳定性
假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。
-
稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序。
-
不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序。
内部排序是数据记录在内存中进行排序。
而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。
常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。
关于时间复杂度:
-
平方阶 (O(n2)) :直接插入、直接选择和冒泡排序。
-
线性对数阶 (O(nlog2n)) : 快速排序、堆排序和归并排序;
-
O(n1+§)) 排序,§ 是介于 0 和 1 之间的常数: 希尔排序
-
线性阶 (O(n)) : 基数排序,此外还有桶、箱排序