1. 程式人生 > >The power of C, the secret of MD

The power of C, the secret of MD

首先說明該排序演算法是抄維基百科的

梳排序(Comb sort)是一種由Wlodzimierz Dobosiewicz於1980年所發明的不穩定排序演算法,並由Stephen Lacey和Richard Box於1991年四月號的Byte雜誌中推廣。梳排序是改良自泡沫排序和快速排序,其要旨在於消除烏龜,亦即在陣列尾部的小數值,這些數值是造成泡沫排序緩慢的主因。相對地,兔子,亦即在陣列前端的大數值,不影響泡沫排序的效能。

在泡沫排序中,只比較陣列中相鄰的二項,即比較的二項的間距(Gap)是1,梳排序提出此間距其實可大於1,改自插入排序的希爾排序同樣提出相同觀點。梳排序中,開始時的間距設定為陣列長度,並在迴圈中以固定比率遞減,通常遞減率設定為1.3。在一次迴圈中,梳排序如同泡沫排序一樣把陣列從首到尾掃描一次,比較及交換兩項,不同的是兩項的間距不固定於1。如果間距遞減至1,梳排序假定輸入陣列大致排序好,並以泡沫排序作最後檢查及修正。

注:陣列也就是陣列了,是港臺那邊的術語。

演算法還是很簡單的,直接給出原始碼:

執行過程和結果如下,測試用例生成的隨機陣列大約進行10次左右的交換就能夠完成排序了: