基本思想:把n个待排序的元素看成是一个有序表和一个无序表,开始的时候,有序表中只有一个元素(待排序数组的首个元素),无序表中有n-1个元素;排序过程就是每次从无序表中取第一个元素,插入有序表中,通过比较大小重排序,使之成为新的有序表,重复n-1次完成整个排序过程。
public class Test {
public static void insertSort(int[] arr) {
if(arr==null||arr.length==0)
return;
for(int i=1;i<arr.length;i++) {//遍历无序表
int temp=arr[i],j=i;//temp为无序表的第一个元素,j为无序表的第一个下标
if(arr[j-1]>temp) {
while(j>=1&&arr[j-1]>temp) {
arr[j]=arr[j-1];
j--;
}
}
arr[j]=temp;
}
}
public static void main(String[] args) {
int[] num= {3,7,4,0,2,6,5};
insertSort(num);
for(int i:num) {
System.out.print(i+" ");
}
}
}
输出:0 2 3 4 5 6 7