64㎡年輕小夫妻的家,三居改一居,安放屋主的所有喜好!
2023-01-30
更新時(shí)間:2022-03-18 18:28:24作者:佚名
桶排序時(shí)間復(fù)雜度:O(N+C),其中C=N*(logN-logM)。桶排序是一個(gè)排序算法,工作的原理是將數(shù)組分到有限數(shù)量的桶子里,每個(gè)桶子再使用別的排序算法或以遞歸方式繼續(xù)使用桶排序進(jìn)行排序。
桶排序的平均時(shí)間復(fù)雜度為線(xiàn)性的O(N+C),其中C=N*(logN-logM)。如果相對(duì)于同樣的N,桶數(shù)量M越大,其效率越高,最好的時(shí)間復(fù)雜度達(dá)到O(N)。當(dāng)然桶排序的空間復(fù)雜度為O(N+M),如果輸入數(shù)據(jù)非常龐大,而桶的數(shù)量也非常多,則空間代價(jià)無(wú)疑是昂貴的。此外,桶排序是穩(wěn)定的。
桶排序的方法
桶排序算法要求,數(shù)據(jù)的長(zhǎng)度必須完全一樣,程序過(guò)程要產(chǎn)生長(zhǎng)度相同的數(shù)據(jù),其方法為:Data=rand()/10000+10000。
每次進(jìn)行下一次的掃描順序是按照上次掃描的結(jié)果來(lái)的,所以設(shè)計(jì)上提供相同的兩個(gè)桶數(shù)據(jù)結(jié)構(gòu)。前一個(gè)保存每一次掃描的結(jié)果供下次調(diào)用,另外一個(gè)臨時(shí)拷貝前一次掃描的結(jié)果提供給前一個(gè)調(diào)用。
在桶排序算法的代碼中,假設(shè)輸入是含n個(gè)元素的數(shù)組A,且每個(gè)元素滿(mǎn)足0≤ A[i]<1。另外還需要一個(gè)輔助數(shù)組B[O..n-1]來(lái)存放鏈表實(shí)現(xiàn)的桶,并假設(shè)可以用某種機(jī)制來(lái)維護(hù)這些表。