經典排序演算法 桶排序Bucket sort

2021-06-27 16:07:40 字數 1561 閱讀 6564

經典排序演算法 - 桶排序bucket sort

補充說明三點

1,桶排序是穩定的

2,桶排序是常見排序裡最快的一種,比快排還要快…大多數情況下

3,桶排序非常快,但是同時也非常耗空間,基本上是最耗空間的一種排序演算法

我自己的理解哈,可能與網上說的有一些出入,大體都是同樣的原理

無序陣列有個要求,就是成員隸屬於固定

(有限的

)的區間,如範圍為[0-9](考試分數為1-100等)

例如待排數字[6 2 4 1 5 9]

準備10個空桶,最大數個空桶

[6 2 4 1 5 9]           待排陣列

[0 0 0 0 0 0 0 0 0 0]   空桶

[0 1 2 3 4 5 6 7 8 9]   桶編號(實際不存在)

1,順序從待排陣列中取出數字,首先6被取出,然後把6入6號桶,這個過程類似這樣:空桶[ 待排陣列[ 0 ] ] = 待排陣列[ 0 ]

[6 2 4 1 5 9]           待排陣列

[0 0 0 0 0 0 6 0 0 0]   空桶

[0 1 2 3 4 5 6 7 8 9]   桶編號(實際不存在)

2,順序從待排陣列中取出下乙個數字,此時2被取出,將其放入2號桶,是幾就放幾號桶

[6 2 4 1 5 9]           待排陣列

[0 0 2 0 0 0 6 0 0 0]   空桶

[0 1 2 3 4 5 6 7 8 9]   桶編號(實際不存在)

3,4,5,6省略,過程一樣,全部入桶後變成下邊這樣

[6 2 4 1 5 9]           待排陣列

[0 1 2 0 4 5 6 0 0 9]   空桶

[0 1 2 3 4 5 6 7 8 9]   桶編號(實際不存在)

0表示空桶,跳過,順序取出即可:1 2 4 5 6 9

以下**僅供參考

///

///桶排序

///1),已知其區間,例如[1..10],學生的分數[0...100]等

///2),如果有重複的數字,則需要 list

陣列,這裡舉的例子沒有重複的數字

/// ///

待排陣列

///待排陣列中的最大數,如果可以提供的話

///static

int bucket_sort(int unsorted, int maxnumber = 99

)

return

sorted;

}static

void main(string

args)

;var sorted = bucket_sort(x, 99

);

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

console.readline();

}

演算法Algorithm 桶(Bucket)排序

確定待排序數列 n個數 的最小值和最大值,確定桶的數量k 然後把這個n個數 均勻的 放到k個桶中 再對每個桶中的數列進行排序 可以使用其他排序演算法 最後依次讀取每個桶中的數就是排好序的整個數列。使用乙個對映函式來達到把n個數放到k個桶的操作,其規則是 左側 桶 先放置的 中的數全部小於 右側 桶中...

經典排序演算法 桶排序Bucket sort

經典排序演算法 桶排序bucket sort 補充說明三點 1,桶排序是穩定的 2,桶排序是常見排序裡最快的一種,比快排還要快 大多數情況下 3,桶排序非常快,但是同時也非常耗空間,基本上是最耗空間的一種排序演算法 我自己的理解哈,可能與網上說的有一些出入,大體都是同樣的原理 無序陣列有個要求,就是...

經典白話演算法之桶排序

最快最簡單的排序 桶排序 在我們生活的這個世界中到處都是被排序過的。站隊的時候會按照身高排序,考試的名次需要按照分數排序,網上購物的時候會按照 排序,電子郵箱中的郵件按照時間排序 總之很多東西都需要排序,可以說排序是無處不在。現在我們舉個具體的例子來介紹一下排序演算法。首先出場的我們的主人公小哼,上...