直接插入排序
直接插入排序(Straight Insertion Sort) 的基本操作是將一個記錄插入到已經排好序的有序表中,從而得到一個新的、記錄數增1 的有序表。
這個有點像我們平時玩撲克牌整理牌的過程。隨機抽取8張撲克牌,需要按照從小到大的序列排列,我們一般會從第二張牌開始不斷的與之前的牌進行比較,直接將撲克牌插入到合適的位置。
如圖1 所示,
第一輪排序:4, 6 均與比之前的數字大,位置變。當i指正遍歷到0的位置,與之前的數字進行比較,0數字最小直接插入到第一位,1,4,6後移一位。
第二輪排序:當i遍歷到3的位置。3比4,6小,比0,1大。插入到1的後一位,4,6後移。後續步驟以此類推。
程式碼實現
//直接插入排序
public static int[] insertSort(int[] a) {
int i, j;
//第一位不需要排序,從i=1開始
for (i=1; i<a.length; i++) {
int temp = a[i];
for (j=i-1; j>=0 && temp<a[j]; j--) {
a[j+1] = a[j]; //記錄後移
}
a[j+1] = temp; //插入到正確位置
}
return a;
}
public static void main(String[] args) {
int[] a = {1, 4 , 6, 0, 3, 2, 5, 9};
int[] b = insertSort(a);
System.out.print("Select sort:\n");
for(int i=0; i<a.length; i++) {
System.out.print(b[i] + ", ");
}
}
執行結果:
Select sort:
1, 4, 6, 6, 6, 6, 6, 9,
時間複雜度 O(n^2)
相關文章
- 直接插入排序法排序
- 三種插入排序 直接插入排序,折半插入排序,希爾排序排序
- 【筆記】直接插入排序筆記排序
- 直接插入排序java描述排序Java
- 直接插入排序演算法排序演算法
- 排序演算法__直接插入排序排序演算法
- 排序演算法:直接插入排序排序演算法
- 排序演算法——直接插入排序排序演算法
- 排序演算法-直接插入排序排序演算法
- 【資料結構】直接插入排序資料結構排序
- 【No.16異常的直接插入排序】排序
- 【排序演算法動畫解】直接插入排序排序演算法動畫
- 【資料結構】直接插入排序_哨兵位資料結構排序
- #排序演算法#【2】直接插入排序、希爾排序排序演算法
- 演算法學習之直接插入排序(java)演算法排序Java
- 程式猿修仙之路--演算法之直接插入排序演算法排序
- 經典演算法之直接插入排序及其優化演算法排序優化
- 筆試之排序-直接插入排序、氣泡排序、快速排序筆試排序
- 04資料結構排序演算法之直接插入排序資料結構排序演算法
- 希爾排序使用直接插入排序、二分插入排序的C++程式碼實現演算法排序C++演算法
- 淺解前端必須掌握的演算法(三):直接插入排序前端演算法排序
- java氣泡排序-選擇排序-插入排序-使用API中文文件直接呼叫函式Java排序API函式
- [java]插入排序及折半插入排序Java排序
- 插入排序排序
- 插入排序排序排序
- python插入排序Python排序
- 數的插入排序排序
- 插入排序(PHP,C)排序PHP
- 排序之插入排序排序
- 連結串列-插入排序排序
- 插入排序以及優化排序優化
- 插入排序(Insertion Sort)排序
- 插入排序-by-Python排序Python
- JavaScript實現:插入排序!!!JavaScript排序
- 【演算法】插入排序演算法排序
- 【筆記】折半插入排序筆記排序
- 【筆記】表插入排序筆記排序
- 插入排序java實現排序Java