排序算法——直接插入排序
生活随笔
收集整理的這篇文章主要介紹了
排序算法——直接插入排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
直接插入排序
1.直接插入排序的思想
- 將數據分成兩部分,前一段是已經有序的數據(初始時,前一段數據只有一個),后一段都是無序數據。
從無序數據中拿一個數據(左邊的第一個數據),插入到前一段的有序數據中,并且使得有序數據段依舊有序。
- 重復上述過程,直到無序數據沒有數據。
- 做一次插入排序后:
2.直接插入排序的實現
/* 時間復雜度:O(n^2) 空間復雜度:O(1) 穩定性: 穩定 */ void InsertSort(int *arr, int len) {for (int i = 1; i < len; ++i) // i負責遍歷無序數據段{int tmp = arr[i];int j = i - 1;for (; j >= 0; --j){if (arr[j] <= tmp){break;}arr[j + 1] = arr[j];}arr[j + 1] = tmp;} }如果數據有序,那么直接插入排序的內層循環就是一個常語句,所以其時間復雜度為 : O(n)
結論:數據越有序,直接插入排序越快,時間復雜度趨近于O(n)
總結
以上是生活随笔為你收集整理的排序算法——直接插入排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C++】字符串中运算符的重载问题
- 下一篇: 排序算法——堆排序