經典排序演算法 - 桶排序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,桶排序非常快,但是同時也非常耗空間,基本上是最耗空間的一種排序演算法 我自己的理解哈,可能與網上說的有一些出入,大體都是同樣的原理 無序陣列有個要求,就是...
經典白話演算法之桶排序
最快最簡單的排序 桶排序 在我們生活的這個世界中到處都是被排序過的。站隊的時候會按照身高排序,考試的名次需要按照分數排序,網上購物的時候會按照 排序,電子郵箱中的郵件按照時間排序 總之很多東西都需要排序,可以說排序是無處不在。現在我們舉個具體的例子來介紹一下排序演算法。首先出場的我們的主人公小哼,上...