要点
将数组分为有序部分和无序部分,有序部分在左边,无序部分在右边
每次遍历有序部分,并将无序部分的第一个放到有序部分的合适位置
程序:
package algorithm.sort;
public class insertSort {
public static void main(String[] args) {
int[] array={5,9,6,8,33,6,55,9,1,10,25,32};
insertSort(array);
}
public static void insertSort(int[] arr){
int length=arr.length;
//i为右边无序部分的最左边元素,也就是我们要处理的元素
for (int i=1;i<length;i++){
//依次比较i元素和它左边的元素,当它比某一个小的时候就把它放在那个元素前面,结束循环
for(int j=0;j<i;j++){
//找到了i元素该放的位置,中间元素右移,i元素放到j位置。
if(arr[i]<arr[j]){
int tmp=arr[i];
int k=i;
while (k>j){
arr[k]=arr[--k];
}
arr[j]=tmp;
break;
}
}
}
for (int i:arr){
System.out.print(i+" ");
}
}
}