算法__插入排序

插入排序:就是將數據插入到已經排好序的數列中,使得最終的數列順序正確。

舉個例子:

5 8 3 5 2

第一輪:

這個數組,我們可以先把 5 這個第一位數字視爲已經排好的數列,將8加入順序排好的隊列中。

1.  8和5做比較,8大於5,所以8排在5右邊;

5 8 3 5 2

第二輪:

現在 5  8  就是已經排好的數組,將3插入這個隊列中。

1.  8和3比較,3比8小,3應該排在8的左邊(代碼中實現可以只將8移動到3的位置,3先拿一個數字緩存,最後找到自己位置再賦值,減少每次數字互換)

2.  3和5比較,3比5小,3應該在5的左邊;

3 5 8 5 2

第三輪:

3  5  8 是有序數組,將5插入。

1.  5和8比較,5小,5在8左邊;

2.  5和5比較,5不比左邊5小,不交換;

3 5 5 8 2

第四輪:

3  5  5  8 是有序數組,將2插入。

1.  2和8比較,2小,2在8左邊;

2.  2和5比較,2小,2在5左邊;

3.  2和5比較,2小,2在5左邊;

4.  2和3比較,2小,2在3左邊;

2 3 5 5 8

代碼如下:

    private int[] querySort1(int array[]) {
        for (int i = 1; i < array.length; i++) {
            int temp = array[i];
            int j = i - 1;
            for (; j >= 0 && temp < array[j]; j--)
                array[j + 1] = array[j];
            array[j + 1] = temp;
        }
        return array;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章