桶排序時間複雜度 桶排序時間複雜度是什麼

桶排序時間複雜度:O(N+C),其中C=N*(logN-logM)。桶排序是一個排序演算法,工作的原理是將陣列分到有限數量的桶子裡,每個桶子再使用別的排序演算法或以遞迴方式繼續使用桶排序進行排序。

桶排序時間複雜度  桶排序時間複雜度是什麼

桶排序的平均時間複雜度為線性的O(N+C),其中C=N*(logN-logM)。如果相對於同樣的N,桶數量M越大,其效率越高,最好的時間複雜度達到O(N)。當然桶排序的空間複雜度為O(N+M),如果輸入資料非常龐大,而桶的數量也非常多,則空間代價無疑是昂貴的。此外,桶排序是穩定的。

桶排序時間複雜度  桶排序時間複雜度是什麼 第2張

桶排序的方法

桶排序演算法要求,資料的長度必須完全一樣,程式過程要產生長度相同的資料,其方法為:Data=rand()/10000+10000。

每次進行下一次的掃描順序是按照上次掃描的結果來的,所以設計上提供相同的兩個桶資料結構。前一個儲存每一次掃描的結果供下次呼叫,另外一個臨時拷貝前一次掃描的結果提供給前一個呼叫。

在桶排序演算法的程式碼中,假設輸入是含n個元素的陣列A,且每個元素滿足0≤ A[i]<1。另外還需要一個輔助陣列B[O..n-1]來存放連結串列實現的桶,並假設可以用某種機制來維護這些表。