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