插入排序策略:
将无序子序列中的一个或几个记录“插入”到有序序列中,从而增加记录的有序序列的长度。
直接插入排序的策略是:
- 一共要进行n-1趟排序;
- 在第p趟,我们将位置p上的元素向左移动,直到它在前p+1个元素中的正确位置被找到的地方。
时间复杂度: O(n*n)
最好的情况是:已经排序好时时间复杂度为 O(n)
直接放代码:
package ch02;
import util.ArrayUtil;
public class InsertSort {
//时间复杂度 O(n*n)
public static void doInsertSort(int[] array){
for(int i=1;i<array.length;i++){
int tmp = array[i];
int j;
for(j=i;j>0&&tmp<array[j-1];j--){
array[j]=array[j-1];
}
array[j]=tmp;
}
}
public static void main(String[] args) {
int[] array = new int[]{58,46,72,95,84,25,37,58,63,12};
// int[] array = new int[]{2,8,6,4,3,9,1};
ArrayUtil.display(array);
//数组的某个值a[i]是值传递;整个数组是引用传递
doInsertSort(array);
ArrayUtil.display(array);
}
}