插入排序
類比:如果你會玩鬥地主,那麼摸牌後按從小到大插入,你這樣插入的過程就是插入排序
程序:在程序中的玩法就像有一個人發牌,發齊了再拿牌,也就是一開始你就有17張牌,這17張牌對應17個元素的數組。你從第二種牌開始進行調動,如果第二張牌比第一張牌小,那麼就把第二張牌抽出來,然後把第一張牌放入到第二張牌的位置,再把抽出的牌放到第一張牌的位置,那麼前兩張牌就排好了;就是這樣依次類推的過程就是我們程序實現的原理。
代碼如下:
public static void insertionSort(int[] a) {
//以免重複計算數組的長度
int len = a.length;
//從第二個元素開始進行操作
for (int i=1; i<len; i++) {
//把這種元素提出來
int key = a[i];
int j = i -1;
//去獲取提出元素的上一個元素,如果比提出元素大,則將這個元素往後移一位,依次類推
while (j >=0 && a[j] > key) {
a[j+1] = a[j];
j--;
}
/*通過上面的循環就得到一個空的位置,前面的做法就是先把本來的位置放空,
然後把當前的位置減一,那麼放回去的時候就是將當前位置加一就得到放空的位置了*/
a[j+1] = key;
}
}
算法複雜度: