直接插入排序思路:
(1)设置监视哨k[0],将需要插入的值赋值给k[0];
(2)设置开始查找的位置j;
(3)在数组中进行查找,搜索中将第j个记录后移,直至k[0]>=k[j] 为止。
(4)将r[0]插入到r[j+1]的位置
平均时间复杂度:O(n2) 最好时间复杂度:O(n) 最坏:O(n2) 空间复杂度:O(1)
代码实现:
public class DirectInsertSort {
public static void directInsertSort(int[] a) {
int n = a.length;
for (int i = 1; i < n; i++) {
for (int j = i; j >0; j--) {
if (a[j] < a[j - 1]) {
int tmp = a[j - 1];
a[j - 1] = a[j];
a[j] = tmp;
}
}
}
}
public static void main(String[] args) {
int [] data = {1,3,4,5,3,7,99,34,78,3,4,76,345,89};
directInsertSort(data);
for (int i = 0; i < data.length; i++) {
System.out.println(data[i]);
}
}
}