桶排序學習

2022-05-09 03:09:07 字數 827 閱讀 9101

**:

將待排序陣列按照大小分別放入n個桶,然後對各桶內資料排序,之後合併。減小總的每次排序的規模,用空間換時間。

元素值域的劃分,也就是元素到桶的對映規則。對映規則需要盡量保證元素分散均勻,否則當所有資料集中在同乙個桶中時,桶排序失效。

排序演算法的選擇。桶排序演算法的複雜度和穩定性,都根據選擇的排序演算法不同而不同。

上面兩個鏈結中給出的對映規則不同:其中乙個是min/10作為間隔大小,另乙個是:(max - min) / arr.length + 1。所以可以根據資料的情況來選擇不同的對映規則。

o(n),//還有待我分析

public

static

void bucketsort(int

arr)

//計算桶的數量

int bucketnum = (max - min) / arr.length + 1

; arraylist

> bucketarr = new arraylist<>(bucketnum);

for(int i = 0; i < bucketnum; i++)

//將每個元素放入桶

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

//對每個桶進行排序

for(int i = 0; i < bucketarr.size(); i++)

//將桶中的元素賦值到原序列

int index = 0

;

for(int i = 0; i < bucketarr.size(); i++)

} }

學習日記 桶排序

最近有學習基數排序 桶排序 先寫下簡單的一次性桶排序。方法 排序陣列a,假象桶bucket,臨時存放陣列tmp 需要方法tmp a.clone 1.複製陣列 tmp a.clone 2.設定桶的長度bucket.length a.max a.min 1 3.將數字放入桶中並記錄數字放入次數 4.調整...

排序 桶排序

首先,桶排序是一種簡單並且執行快的一種排序。第一步,對五個數進行排序。程式如下 include using namespace std int main 首先對陣列進行歸零 for int j 1 j 5 j 將輸入的數的個數存入陣列中。for int k 1 k 10 k 執行原理 桶排序,就是先...

演算法學習03 桶排序

首先遍歷陣列,找到最大值與最小值,設定乙個長度為最大值 最小值 1的陣列,再次遍歷這個陣列,以當前值 最小值作為下標,將該下標的計數器增1。掃瞄一遍計數器陣列,按順序將值收集起來。舉個例子 nums 2,4,3,4,7 遍歷一次陣列,找到陣列元素的最小值與最大值分別為2和7,那麼我們設定乙個長度為7...