基本思想:
对于给定的一组初始数据,假定其第一个数据为有序序列,从第二个数据开始为无序序列,接着从第二个数据开始,依次和之前有序序列比较,插入到合适位置。
代码实现:
public static void main(String[] args) {
int[] array = new int[]{1,3,6,2,8,7,10,4,9,5};
insertSort(array);//插入排序
}
public static void insertSort(int arr[]){
for(int i=1; i<arr.length; i++){
if(arr[i-1]>arr[i]){
int temp = arr[i];
int j = i;
while(j>0 && arr[j-1]>temp){
arr[j] = arr[j-1];//当要插入的元素小于第j-1个元素,就将第j-1个元素向后移动
j--;
}
arr[j] = temp;
}
System.out.print("第"+ i+ "次排序结果:");
for(int k=0; k<arr.length; k++){
System.out.print(" "+arr[k]+" ");
}
System.out.print("\n");
}
}
执行结果:
第1次排序结果: 1 3 6 2 8 7 10 4 9 5
第2次排序结果: 1 3 6 2 8 7 10 4 9 5
第3次排序结果: 1 2 3 6 8 7 10 4 9 5
第4次排序结果: 1 2 3 6 8 7 10 4 9 5
第5次排序结果: 1 2 3 6 7 8 10 4 9 5
第6次排序结果: 1 2 3 6 7 8 10 4 9 5
第7次排序结果: 1 2 3 4 6 7 8 10 9 5
第8次排序结果: 1 2 3 4 6 7 8 9 10 5
第9次排序结果: 1 2 3 4 5 6 7 8 9 10