直接插入排序演算法
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已經減小,所以將哨兵資料插入到對應位置
}
相關文章
- 排序演算法__直接插入排序排序演算法
- 排序演算法:直接插入排序排序演算法
- 排序演算法——直接插入排序排序演算法
- 【排序演算法動畫解】直接插入排序排序演算法動畫
- 直接插入排序排序
- 程式猿修仙之路--演算法之直接插入排序演算法排序
- 三種插入排序 直接插入排序,折半插入排序,希爾排序排序
- 04資料結構排序演算法之直接插入排序資料結構排序演算法
- 淺解前端必須掌握的演算法(三):直接插入排序前端演算法排序
- 希爾排序使用直接插入排序、二分插入排序的C++程式碼實現演算法排序C++演算法
- 常用演算法-插入排序演算法排序
- 排序演算法__折半插入排序排序演算法
- 實時插入排序演算法排序演算法
- 排序演算法:插入排序演算法 PHP 版排序演算法PHP
- PHP 演算法02之插入排序PHP演算法排序
- Python進階-演算法-插入排序Python演算法排序
- 死磕演算法之插入排序演算法排序
- PHP 排序演算法之插入排序PHP排序演算法
- 排序演算法之折半插入排序排序演算法
- 小白懂演算法之插入排序演算法排序
- 從演算法開始(插入排序)演算法排序
- 從演算法開始[插入排序]演算法排序
- 排序演算法入門之「插入排序」排序演算法
- 排序演算法(3)插入排序(Insertion Sort)排序演算法
- 排序演算法之「插入排序(Insertion Sort)」排序演算法
- 畫江湖之演算法篇【排序演算法】插入排序演算法排序
- 畫江湖之演算法篇 [排序演算法] 插入排序演算法排序
- 排序演算法之——二分插入排序演算法排序演算法
- 三分鐘看懂插入排序演算法排序演算法
- 排序演算法:二分插入排序排序演算法
- Java常見排序演算法之插入排序Java排序演算法
- 2.插入排序演算法(Insertion_Sort)排序演算法
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- 手寫演算法並記住它:插入排序演算法排序
- 三言兩語講排序演算法——插入排序排序演算法
- 【一起學習排序演算法】4 插入排序排序演算法
- python演算法與資料結構-插入排序(34)Python演算法資料結構排序
- Java實現氣泡排序和插入排序演算法Java排序演算法