直接插入排序解剖
算法介绍
插入排序基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。
算法思想
每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
算法代码(Java)
* 泛型 直接插入插入排序
* @param a 待排序序列
*/
public static <T extends Comparable<? super T>> void insertionSort(T[] a) {
int j;
T tmp;
for (int i = 1; i < a.length; i++) {
tmp = a[i];
for (j = i; j > 0 && tmp.compareTo(a[j-1])<0; j--) {
a[j] = a[j-1];
}
a[j] = tmp;
}
}
算法分析
最好情况时间复杂度:O(n)
最坏情况时间复杂度:O(n^2)
平均时间复杂度:O(n^2)
空间复杂度:O(1)