//插入排序法
public class code8{
public static void main(String [] args){
int [] arr= {8,4,2,1,23,344,12};
for (int i=0;i<arr.length-1;i++) {
int curr = arr[i+1];//
for( int j=i;j>=0;j-- ){
if(curr<arr[j]){
arr[j+1] = arr[j];
}else{
break;
}
arr[j] = curr;
}
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"------");
}
}
}
本循环主要是和前一个数进行比较
当循环中i=0时,curr = arr[1]=4,for(j=i=0),判断curr<arr[0]:成立,arr[1] = arr[0],此时arr[1]=8,
继续执行arr[j] = curr,此时arr[0]=4
排序为:4,8,2,1,23,344,12
当循环中i=1时,curr = arr[2]=2,for(j=i=1),判断curr<arr[1]:成立,arr[2] = arr[1],此时arr[2]=2,
排序为:4,2,8,1,23,344,12
for(j=0),判断curr<arr[0]:成立,arr[1] = arr[0],此时arr[1]=4,继续执行arr[j] = curr,此时arr[0]=2
排序为:2,4,8,1,23,344,12
当循环中i=2时,curr = arr[3]=1,for(j=i=2),判断curr<arr[2]:成立,arr[3] = arr[2],此时arr[3]=8,
排序为:2,4,1,8,23,344,12
for(j=1),判断curr<arr[1]:成立,arr[2] = arr[1],此时arr[1]=1,继续执行arr[j] = curr,此时arr[2]=4
排序为:2,1,4,8,23,344,12
for(j=0),判断curr<arr[0]:成立,arr[1] = arr[0],此时arr[1]=2,
继续执行arr[j] = curr,此时arr[0]=1
排序为:1,2,4,8,23,344,12
...
排序分别为:
i=3,j=3;排序为:1,2,4,8,23,344,12
i=3,j=2;排序为:1,2,4,8,23,344,12
i=3,j=1;排序为:1,2,4,8,23,344,12
i=3,j=0;排序为:1,2,4,8,23,344,12
i=4,j=4;排序为:1,2,4,8,23,344,12
i=4,j=3;排序为:1,2,4,8,23,344,12
i=4,j=2;排序为:1,2,4,8,23,344,12
i=4,j=1;排序为:1,2,4,8,23,344,12
i=4,j=0;排序为:1,2,4,8,23,344,12
i=5,j=5;排序为:1,2,4,8,23,12,344
i=5,j=4;排序为:1,2,4,8,12,23,344
i=5,j=3;排序为:1,2,4,8,12,23,344
i=5,j=2;排序为:1,2,4,8,12,23,344
i=5,j=1;排序为:1,2,4,8,12,23,344
i=5,j=0;排序为:1,2,4,8,12,23,344