插入排序--java

插入排序

原理

選擇排序就是將一個無序數組插入一個有序數組,並保持有序數組順序。通常將無序數組的第一個元素認爲是一個有序數組,第二個元素及其之後的元素爲待排序的數組。通過兩層遍歷,外層爲需要循環的輪數,內層爲循環有序數組找到插入位置進行元素移位。

示例

/**
     * 插入排序  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));
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章