直接插入演算法的學習記錄
學習直接插入演算法記錄:
思想:
直接插入排序是一種最簡單的排序方法,其基本操作是將一條記錄插入到已排好的有序表中,從而得到一個新的、記錄數量增1的有序表。
這個句話怎麼理解呢:這句話的重點是已排好的有序表中插入一個待排序的元素;
舉個例子:
int[] array = new[] {8, 10, 50, 24, 13, 86, 16, 13, 14, 9, 6, 0};
這是一個無序陣列對它進行排序
1.首先我們可以把第一個元素 8 看作是一個有序的表,(即8前面的數字都比 8 要小)。
2.把8之後的都看作為待排序的元素
好下面上程式碼解釋
2.程式碼
/// <summary>
/// 直接插入排序
/// </summary>
/// <param name="array"></param>
public static void StraightInsertionSort(int[] array) {
//此時我們已經將8看作是有序的序列(即8前面的數字都比8小)
//所以我們從待排的第一個元素開始遍歷
for (int i = 1; i < array.Length; i++) {
int sentinel = array[i]; // 找出第一個待排元素
int j = i - 1; //此時他要跟有序序列的最後一個元素進行比較
//如果 j > 0 並且待排元素比有序的最後一個元素要小 則將有序元素進行後移一位 再此跟倒數第二未元素進行比較,直到找到比到比待排元素小的停止
while (j >= 0 && sentinel < array[j]) {
array[j + 1] = array[j];
j--;
}
array[j + 1] = sentinel;
}
}
總結一點就是將元素插入到合適的位置。
推薦學習演算法的網站:演算法學習-裡面有演示
最後:能力有限如果有解釋不清楚的地方望原諒。
相關文章
- 《演算法圖解》學習記錄演算法圖解
- 演算法學習之直接插入排序(java)演算法排序Java
- 【每日學習記錄】使用錄影裝置記錄每天的學習
- 演算法學習---歸併演算法簡單記錄演算法
- sass的學習記錄
- 學習記錄
- mybatis plus的學習記錄MyBatis
- 記錄學習PromisePromise
- windbg學習記錄
- Eureka學習記錄
- Mybatis學習記錄MyBatis
- socket學習記錄
- JQuery學習記錄jQuery
- larabbs 學習記錄
- Tableau學習記錄
- MySQL學習記錄MySql
- Elasticsearch學習記錄Elasticsearch
- swift學習記錄Swift
- jQuery 學習記錄jQuery
- RAC 學習記錄
- RMAN學習記錄
- RAC學習記錄
- activiti學習記錄
- 學習記錄APPAPP
- langchain學習記錄LangChain
- JAVA學習記錄Java
- Docker學習記錄Docker
- 【記錄】MySQL 學習筆記MySql筆記
- [記錄] MySQL 學習筆記MySql筆記
- Flutter學習記錄(一)Dart學習FlutterDart
- MVVM的學習記錄和思考MVVM
- 我的學習(踩坑)記錄
- starrycan的pwn學習記錄1
- 演算法學習記錄十四(C++)--->二叉樹的映象演算法C++二叉樹
- 演算法學習記錄十(C++)--->數值的整數次方演算法C++
- Vue 學習記錄四Vue
- Vue 學習記錄三Vue
- Vue 學習記錄一Vue