插入排序
原理
選擇排序就是將一個無序數組插入一個有序數組,並保持有序數組順序。通常將無序數組的第一個元素認爲是一個有序數組,第二個元素及其之後的元素爲待排序的數組。通過兩層遍歷,外層爲需要循環的輪數,內層爲循環有序數組找到插入位置進行元素移位。
示例
/**
* 插入排序 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));
}