插入排序
原理
选择排序就是将一个无序数组插入一个有序数组,并保持有序数组顺序。通常将无序数组的第一个元素认为是一个有序数组,第二个元素及其之后的元素为待排序的数组。通过两层遍历,外层为需要循环的轮数,内层为循环有序数组找到插入位置进行元素移位。
示例
/**
* 插入排序 while
* @param array
*/
public static void insertSortWhile(int[] array){
for(int i=1;i<array.length;i++){//第一个元素默认为有序数组,从第二个开始排序
int j = i-1; //当前待排序元素的前一个元素位置
int temp = array[i]; //记录当前待排序元素
while(j >= 0 && array[j] > temp){//循环,当循环到第一个元素或者已经找到插入位置停止,<或者>决定从大到小还是从小到大
array[j+1] = array[j]; //j有可能为要插入的位置,j位置元素后移
j--;//继续循环
}
array[j+1] = temp;//j在循环结束时又执行了减操作,所以要插入的位置为j+1
}
System.out.println(Arrays.toString(array));
}
/**
* 插入排序 for
* @param array
*/
public static void insertSortFor(int[] array){
for(int i=1;i<array.length;i++){
int j=i-1;
int temp=array[i];
for(;j>=0 && array[j]>array[i];j--){
array[j+1] = array[j];
}
array[j+1]=temp;
}
System.out.println(Arrays.toString(array));
}