直接插入排序(straight insertion sort)的基本思想:
每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子串行中的適當位置,直到全部記錄插入完成為止。
設陣列為a[0…n-1],其中紅色區域為有序區域
1. 初始時,a[0]自成1個有序區,無序區為a[1..n-1]。
a[0]
a[1] ... a[n-1]
2. 將a[i]插入到當前的有序區a[0…i-1]中形成a[0…i]的有序區間。
a[0] ... a[i-1]
a[i] ... a[n-1]
-----> a[0] ... a[i]
a[i+1] ... a[n-1]
3. i++並重複第二步直到 i == n-1, 排序完成。
a[0] ... a[n-1]
下面是實現的**:
每次a[i]先和前面乙個資料a[i-1]比較,如果a[i] > a[i-1]說明a[0…i]也是有序的,無須調整。否則就令j=i-1,temp=a[i]。然後一邊將資料a[j]向後移動一邊向前搜尋,當有資料a[j]
public static void insertsort(int a, int n)
a[j+1] = temp;
}}
}
排序演算法 插入排序之直接插入排序
直接插入排序的核心思想是把乙個記錄插入乙個有序序列中,每插入乙個記錄就得到乙個新的有序序列,直到所有記錄都插入成功,得到有序序列。每次插入記錄時的有序序列如何得到,關鍵在第一次,第一次要插入的記錄時序列的第二個值,有序序列只有乙個值,就是第乙個記錄。a j 1 x j 1就是要插入的位置 print...
排序演算法之直接插入排序
直接插入排序類似於我們平常在打撲克摸牌時候的一種情形。我習慣於左手拿牌右手摸牌,每次先把左手中的牌齊整齊,然後右手新摸一張牌中把它放到左手中正確的位置,讓它成為乙個新的整齊的牌堆。如果根據上面的思路我們可以發現,直接插入排序的思想就是,從需要排序的第二個數字開始,拿取乙個數,與前面的數字進行比較,放...
排序演算法之直接插入排序
基本思想 直接插入排序的思想非常簡單,將序列中第乙個元素作為乙個有序序列,然後將剩下n 1個元素按關鍵字大小依次插入該有序序列,每插入乙個元素後依然保持該序列有序,經過n 1趟排序後即成為有序序列。直接插入排序示例 由圖可以看到,括號裡面的都是有續表,而貨號後面的灰色關鍵字是下乙個將要插入的元素。v...