直接插入排序
1、什么是直接插入排序?
- 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。
2、具体流程
-
首先在当前有序区R[1…i-1]中查找R[i]的正确插入位置k(1≤k≤i-1);然后将R[k..i-1]中的记录均后移一个位置,腾出k位置上的空间插入R[i]。
若R[i]的关键字大于等于R[1..i-1]中所有记录的关键字,则R[i]就是插入原位置。
3、具体实现
/**
1. 直接插入排序
2. @param array
*/
public static void insertSort(int[] array){
int tmp = 0;
for (int i = 1; i < array.length; i++) {
tmp = array[i];
int j = 0;
for (j = i-1; j >= 0 ; j--) {
if(array[j] > tmp) {
array[j+1] = array[j];
}else break;
}
array[j+1] = tmp;
}
}
4、特点
- 元素集合越接近有序,直接插入排序算法的时间效率越高
- .时间复杂度:O(N^2)
- 空间复杂度:O(1),它是一种稳定的排序算法
- 稳定性:稳定