直接插入排序演算法
What?
將待排序列分為有序數列和無序數列,將無序數列中的數,與有序數列的數進行比較,將其根據大小插入有序數列,從而完成排序。
how?
待排序列:57,42,39,20
劃分數列:
有序數列 | 無序數列
57 | 42,39,20
外一趟:
42<57 true
有序數列 | 無序數列
42,57 | 39,20
外二趟:
內一趟:
39<57 true
內二趟:
39<42 true
有序數列 | 無序數列
39,42,57 | 20
外三趟:
內一趟:
20<57 true
內二趟:
20<42 true
內三趟:
20<39 true
有序數列 | 無序數列
20,39,42,57 |
排序完成!
程式碼
//定義哨兵
int temp;
//外迴圈
for (int i = 1; i < data.Count; i++)//i=1.及將i=0這個數作為有序數列,i=1這個數作為無序數列的第一個數
{
int j = i;
temp = data[i];//將無序數列的第一個數,作為哨兵,拿著哨兵與有序數列的所有數進行比較
//內迴圈while就是實現這個過程的。
while (j > 0 && temp < data[j - 1])// 當哨兵這個數小於它前面的那個數時。
{
data[j] = data[j - 1];//將大數的索引值加1;
j--;//減少迴圈的次數
}
data[j] = temp;//由於此時j已經減小,所以將哨兵資料插入到對應位置
}
相關文章
- 排序演算法__直接插入排序排序演算法
- 排序演算法:直接插入排序排序演算法
- 排序演算法——直接插入排序排序演算法
- 排序演算法-直接插入排序排序演算法
- 【排序演算法動畫解】直接插入排序排序演算法動畫
- #排序演算法#【2】直接插入排序、希爾排序排序演算法
- 演算法學習之直接插入排序(java)演算法排序Java
- 直接插入排序排序
- 程式猿修仙之路--演算法之直接插入排序演算法排序
- 直接插入排序法排序
- 經典演算法之直接插入排序及其優化演算法排序優化
- 三種插入排序 直接插入排序,折半插入排序,希爾排序排序
- 【筆記】直接插入排序筆記排序
- 直接插入排序java描述排序Java
- 04資料結構排序演算法之直接插入排序資料結構排序演算法
- 淺解前端必須掌握的演算法(三):直接插入排序前端演算法排序
- 希爾排序使用直接插入排序、二分插入排序的C++程式碼實現演算法排序C++演算法
- 【資料結構】直接插入排序資料結構排序
- 【演算法】插入排序演算法排序
- 【No.16異常的直接插入排序】排序
- 常用演算法-插入排序演算法排序
- 排序演算法——插入排序排序演算法
- 【資料結構】直接插入排序_哨兵位資料結構排序
- python演算法 - 插入排序演算法Python演算法排序
- 實時插入排序演算法排序演算法
- 排序演算法__折半插入排序排序演算法
- 排序演算法:插入排序演算法 PHP 版排序演算法PHP
- PHP 排序演算法之插入排序PHP排序演算法
- 排序演算法之折半插入排序排序演算法
- PHP 演算法02之插入排序PHP演算法排序
- 從演算法開始[插入排序]演算法排序
- 小白懂演算法之插入排序演算法排序
- 從演算法開始(插入排序)演算法排序
- 死磕演算法之插入排序演算法排序
- 筆試之排序-直接插入排序、氣泡排序、快速排序筆試排序
- Python進階-演算法-插入排序Python演算法排序
- 排序演算法入門之「插入排序」排序演算法
- 經典演算法之折半插入排序演算法排序