撲克牌是我們幾乎每個人都可能玩過的游戲。最基本的撲克玩法都是一邊摸牌,一邊理牌。假如我們拿到了這樣一手牌,如圖9-5-1所示。啊,似乎是同花順呀,別急,我們得理一理順序才知道是否是真的同花順。請問,如果是你,應該如何理牌呢?
應該說,哪怕你是第一次玩撲克牌,只要認識這些數字,理牌的方法都是不用教的。將3和4移動到5的左側,再將2移動到最左側,順序就算是理好了。這里,我們的理牌方法,就是直接插入排序法。
(以上內容來自: 程杰. “大話數據結構” )
假設初始序列53462。以下畫了個圖表示執行過程
直接插入排序
public class StraightInsertSort {
public static int[] StraightInsertSort(int[] arr){
int temp;
for(int i = 1; i < arr.length; i++){ // 從第二個數開始插入,第一個默認有序
if(arr[i] < arr[i-1]){ // 如果比第一個數大,就也有序;如果比第一個數小就要考慮插入
temp = arr[i];//記錄當前數
int j;
for(j = i-1; j >= 0 && arr[j] > temp; j--){//從后往前循環,比當前數大就往后挪一個位置
arr[j+1] = arr[j];
}
//循環執行完后把arr[j+1]這個位置騰出來了,這個位置就是該插入的位置
arr[j+1] = temp;
}
}
return arr;
}
}