希爾排序
直接插入排序就是把待排序的記錄按關鍵字的大小逐個插入到乙個已經排好序的有序序列中,直到所有記錄插入完為止。
我們可以假設序列第乙個元素是已經排好序的,要插入第i(i>=1)個元素,可以將array[i]與排好序的每個元素相比較,知道找到乙個比array[i]要小的元素插入到這個元素後面。原來的元素後移。
如上圖可見,直接插入排序是穩定的時間複雜度o(n2)
空間複雜度o(1)
當序列越接近有序排序效率越高
先選定乙個整數,把待排序序列中所有記錄分成若干組,先對每一組內的記錄進行排序,然後重複上述分組和排序工作,直到分組為1,所有記錄排好序。
void
希爾排序是對直接插入排序的優化
gap>1是為了讓序列更接近有序,當gap=1,這樣會更快
希爾排序是不穩定的
平均時間複雜度o(n1.3~n2)
常見排序演算法之插入排序
目錄 一 簡介 二 排序思路 三 演算法實現 四 原理分析 插入排序,就是假定乙個參考值,假設該參考值左邊的元素都有序,那麼從該元素開始從後往前挨個查詢,如果找到比參考值大的數,那麼就將這個大的數後移,如果未找到比參考值大的數,說明不用移動元素。迴圈比較,經過比較後移之後就會空出乙個位置,用於存放這...
常見排序演算法之插入排序
把陣列分為有序部分與無序部分,當乙個陣列排序時,第 0 位置上為有序部分,其餘部分為無序部分,詳細見下面 然後讓無序部分插敘有序部分,先讓有序部分最後乙個與無序部分第乙個比較,如果條件滿足 大,或者小 就交換位置,然後依次與有序部分倒數第二個繼續比較,直到不需要交換位置。這樣組成了新的有序部分與部分...
常見的排序演算法之插入排序
排序演算法是在資料結構中十分常見的操作,每種排序演算法都有不同的特點,接下來我們學習以下常用的排序演算法 插入排序。插入排序可以分為直接插入排序和希爾排序。當插入第i i 1 個元素時,前面的array 0 array 1 array i 1 已經排好序,此時用array i 的排序碼與array ...