希爾排序以插入排序為基礎,不同的或者說改進的地方是,插入排序或者其它排序解決不了資料太大的陣列,那樣會非常費時,而如果讓插入排序在乙個乙個向前插入之前使其部分有序,即讓它先以h的間隔有序,最後再執行一次插入排序會不會更快呢?答案是會的。
1、主要思想:
以上面說的為例,讓陣列以h為間隔進行插入排序,h=。注意其中的最後乙個h必須為1,也就是說最後必須進行一次插入排序。
2、時間複雜度
雖然現在沒有研究出最好的h序列,但是某個特殊序列下,時間複雜度可以降低到o(nlogn)。
3、實現**(整數陣列,輸入大小和各元素,在這裡的h序列定義為5,3,1)
#include using namespace std;
void sort(int *a,int n,int h)
int b[3]=;
for(int h = 0;h<3;h++)
for(int i = 0;i
希爾排序思想分析
這個圖可能一下子看不懂 現在來解釋一下 解釋 第一趟 第1個和第6個比較 排序 第2個和第7個比較,排序 第3個和第8個比較,排序 以此類推直到所有的都排好 第二趟 第1個 第3個 第5個 第7個 第9個 一起比較 排序 第2個 第4個 第6個 第8個 第10個 一起比較 排序 第三趟 都排序 優劣...
希爾排序基本思想
基本思想 先取乙個小於n的整數d1作為第乙個增量,把檔案的全部記錄分成d1個組。所有距離為dl的倍數的記錄放在同乙個組中。先在各組內進行直接插人排序 然後,取第二個增量d2 1重複上述的分組和排序,直至所取的增量dt 1 dt t l 2 1 即所有記錄放在同一組中進行直接插入排序為止。該方法實質上...
希爾排序 原理及python實現
希爾排序的實質就是分組插入排序,該方法又稱縮小增量排序,因dl shell於1959年提出而得名。希爾排序,也稱遞減增量排序演算法,是插入排序的一種更高效的改進版本。希爾排序是非穩定排序演算法。希爾排序是基於插入排序的以下兩點性質而提出改進方法的 插入排序在對幾乎已經排好序的資料操作時,效率高,即可...