Java中的七大排序_1 插入排序

一:七種排序

插入排序、希爾排序、選擇排序、堆排序、冒泡排序、快速排序、歸併排序ide

2、排序思想(以非降序排列爲例)

簡單點說:將待排元素分爲有序區間和無序區間,並假設第一個元素已經有序。每次取出無序區間的第一個值記做key吧,將它與有序區間的元素從後往前進行比較,大於等於有序區間最後一個數,就放後邊當成新的有序區間的最後一個數;小於的話,就繼續往前比較,直到找到一個比它還小的有序區間的數,並把key插入到該值的後邊。
注意:咱們在有序區間插入元素時,必定要提早空好位置在作插入操做,若是直接插入,會致使原來數據被覆蓋而丟失。因此要先將插入位置以後的有序區間的元素從後往前依次向後移動一下,(從後往前,仍是爲了不數據被覆蓋)。這樣操做後,就會將插入位置空出,此時,在將key插入3d

3、圖示:以排18292415224爲例

1.將元素分爲有序區間和無序區間,並假設第一個元素已經有序
Java中的七大排序_1 插入排序
2.key從無序區間第一個開始有序的下一個),key=8大於等於有序區間最後一個數,就放後邊當成新的有序區間的最後一個數,接着進行下一步的key值比較定位
Java中的七大排序_1 插入排序code

3.key=2,小於有序區間的最後一個數8,就繼續往前比較,直到找到一個比它還小的有序區間的數,在該數以後作插入
Java中的七大排序_1 插入排序
4.先將插入位置以後的有序區間的元素從後往前依次向後移動一下,騰出空位,插入key
Java中的七大排序_1 插入排序
5.key=9,key>=8,成爲新有序區間的最後一個數
6.key=2, key<9, 向前遍歷比較,直到找到一個小於等於2的數,在該數以後作騰位、再插入key=2
Java中的七大排序_1 插入排序
Java中的七大排序_1 插入排序
9.依次類推,最終將全部元素按非降序排號
Java中的七大排序_1 插入排序blog

4、代碼實現

public static void insertSort2(int[] array) {//插入排序代碼
for (int i = 0; i < array.length - 1; i++) {//循環的次數,也監控着每一輪開始key的位置
int key = array[i + 1];
int j;
for (j = i; j >= 0 && key < array[j]; j--) {//一邊比較一邊爲key的插入騰空位
array[j + 1] = array[j];
}
array[j + 1] = key;
}
}
相關文章
相關標籤/搜索