直接插入演算法的學習記錄
學習直接插入演算法記錄:
思想:
直接插入排序是一種最簡單的排序方法,其基本操作是將一條記錄插入到已排好的有序表中,從而得到一個新的、記錄數量增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;
}
}
總結一點就是將元素插入到合適的位置。
推薦學習演算法的網站:演算法學習-裡面有演示
最後:能力有限如果有解釋不清楚的地方望原諒。
相關文章
- 《演算法圖解》學習記錄演算法圖解
- 【每日學習記錄】使用錄影裝置記錄每天的學習
- 演算法學習---歸併演算法簡單記錄演算法
- 學習記錄
- mybatis plus的學習記錄MyBatis
- Eureka學習記錄
- Mybatis學習記錄MyBatis
- windbg學習記錄
- MySQL學習記錄MySql
- 2024.4.15學習記錄
- fastadmin 學習記錄AST
- Tableau學習記錄
- 記錄學習PromisePromise
- Docker學習記錄Docker
- JAVA學習記錄Java
- activiti學習記錄
- 學習記錄APPAPP
- hadoop學習記錄Hadoop
- langchain學習記錄LangChain
- larabbs 學習記錄
- JQuery學習記錄jQuery
- socket學習記錄
- python學習記錄Python
- 演算法練習記錄(24.10.5)演算法
- 【記錄】MySQL 學習筆記MySql筆記
- [記錄] MySQL 學習筆記MySql筆記
- Flutter學習記錄(一)Dart學習FlutterDart
- MVVM的學習記錄和思考MVVM
- starrycan的pwn學習記錄1
- 我的學習(踩坑)記錄
- iOS KVO學習記錄iOS
- iOS KVC學習記錄iOS
- 分散式學習記錄分散式
- flutter學習記錄-1Flutter
- Mysql Replication學習記錄MySql
- 20180311 日常學習記錄
- Vue 學習記錄一Vue
- Vue 學習記錄二Vue