希爾排序是一種插入排序,是對直接插入排序的一種改進,該演算法出自於d.l.shell,因此得名為希爾。shell排序又名縮小增量排序。
假設初始序列為n個元素,先取乙個小於n的整數d1作為第乙個增量,然後將全部元素分為d1組。所有距離為d1的倍數的記錄放在同乙個組中,先在各個組內進行直接插入排序,然後取第二個增量d2 < d1(d2=d1/2)重複上述的分組和排序動作,直到所取的增量di=1,即所有記錄放在同一組中進行直接插入排序為止。
注意:一般去d1=n/2,di+1=di/2。如果結果為偶數,則加1,保證di為奇數。
初始序列為[ 6 3 4 1 5 8]
第一步:
d1=6/2=3,將第乙個和第四個比較,進行交換,如圖所示。
第二步:
d2=d1/2=1.5,由於取奇數,所以d2=1;
此時待排序列仍是無序的。
第三步:
這樣希爾排序才是真正的完成。
**
void shellsort(int number)分析由上面的例子可以看出,希爾排序的執行時間依賴於增量序列d的選擇,由於增量不確定,所以希爾排序是不穩定的排序。其平均時間複雜度是else
break;
}
} } }
o(n1.3
),最壞情況時間複雜度為
o(n2
);空間複雜度為o(1)。
總結:經過上述分析之後發現shell排序演算法的中心在與找到增量,根據增量來找到兩兩需要比較和交換的值,最後再進行一次直接插入運算,這樣就算是大功告成了。
軟考又見軟考
我這地兒 報名截止時間都快到了,3月4日,我才知道開始報名了。大三了,課程少了些。一直想考這個證來著,無奈時間太緊要不就是專業課還沒學。現在已經定下要考本專業研了,方向嘛 唉也說不准,大家都知道這個證是其次的搞技術的話還是能力問題,我的想法考這個是為了梳理專業知識,以備研究生專業課的考試 以後很可能...
軟考 軟考之路
面對軟考你是怎樣的心境呢?從最開始我拿到軟考書開始,感覺好厚呀,還有三門自考,這是要把自己置於何地了呢?但是翻開書本,看到那熟悉的知識,很多都是自考中的知識,這個時候是不是該悔恨當初沒有好好學習自考了呢?一 三遍讀書法 一本書從開始讀,到每一遍的不斷閱讀將書本讀薄,將知識理解,每一遍都是不可缺少的一...
軟考之軟考總結
從準備軟考到軟考結束,差點兒相同三個月的時間。儘管我們學計算機的時間已經不短,可是大規模 系統性的學習計算機理論的知識的時候,當從組成原理到編譯原理,從資料庫到作業系統,從物件導向技術到設計模式,儘管之前大都都接觸過,可是當全部理論性的知識,排著長隊,等著你一一檢閱的時候,你才發現,原來自己肚子裡的...