排序演算法 9 桶排序(Bucket Sort)

2021-09-20 12:54:49 字數 1073 閱讀 7113

桶排序是計數排序的公升級版。它利用了函式的對映關係,高效與否的關鍵就在於這個對映函式的確定。桶排序 (bucket sort)的工作的原理:假設輸入資料服從均勻分布,將資料分到有限數量的桶裡,每個桶再分別排序(有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排)。

9.1 演算法描述

9.2 演示

9.3 **實現

function bucketsort(arr, bucketsize) 

var i;

var minvalue = arr[0];

var maxvalue = arr[0];

for (i = 1; i < arr.length; i++) else if (arr[i] > maxvalue)

}// 桶的初始化

var default_bucket_size = 5; // 設定桶的預設數量為5

bucketsize = bucketsize || default_bucket_size;

var bucketcount = math.floor((maxvalue - minvalue) / bucketsize) + 1;

var buckets = new array(bucketcount);

for (i = 0; i < buckets.length; i++)

// 利用對映函式將資料分配到各個桶中

for (i = 0; i < arr.length; i++)

arr.length = 0;

for (i = 0; i < buckets.length; i++)

}return arr;

}

9.4 演算法分析

桶排序最好情況下使用線性時間o(n),桶排序的時間複雜度,取決與對各個桶之間資料進行排序的時間複雜度,因為其它部分的時間複雜度都為o(n)。很顯然,桶劃分的越小,各個桶之間的資料越少,排序所用的時間也會越少。但相應的空間消耗就會增大。

9 排序演算法 桶排序

桶排序是計數排序的公升級版。它利用了函式的對映關係,高效與否的關鍵就在於這個對映函式的確定。為了使桶排序更加高效,我們需要做到這兩點 在額外空間充足的情況下,盡量增大桶的數量 使用的對映函式能夠將輸入的 n 個資料均勻的分配到 k 個桶中 同時,對於桶中元素的排序,選擇何種比較排序演算法對於效能的影...

排序演算法 桶排序

桶排序 bucket sort 或所謂的箱排序,是乙個排序演算法,工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 桶排序是鴿巢排序的一種歸納結果。當要被排序的陣列內的數值是均勻分配的時候,桶排序使用線性時間 n 但桶排序並不...

排序演算法 桶排序

2009 12 02 12 01 2817人閱讀 桶排序 bucket sort 或所謂的箱排序,是乙個排序演算法,工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 桶排序是鴿巢排序的一種歸納結果。當要被排序的陣列內的數值是均...