今天学习的算法,简单桶排序。(这远远称不上桶排序算法)
所谓桶排序,就是将每个输入的数放入它对应的桶中,最后再按照桶的顺序从小到大或从大到小去逐一倒出来,这样就实现桶排序了。
下面我举个例子,我要排范围0-10的15个数。
1 #include <iostream> 2 3 using namespace std; 4 5 int main() 6 { 7 int num; 8 int a[11]={0};//对0到10之间的数进行排序 9 cout<<"输入15个范围0-10的数进行排序:"; 10 for(int i=0; i<15; i++) 11 { 12 cin>>num; 13 a[num]++; 14 } 15 16 cout<<"排序后结果:"; 17 for(int i=10; i>=0; i--) 18 for(int j=0; j<a[i]; j++) 19 cout<<i<<ends; 20 }
因为我要排0-10的数,所以我需要桶的序号为0-10,即11个桶,所以我们要申请数组大小为11,初始值全为0(排序前千万别忘了要将桶清空!)。
任意输入15个0-10的数,每次输入一个数,就将它放进它的序号对应的桶中。例如我输入9,那么就将它放入a[9]中,即a[9]++,如果我再输入一个9,那么桶中9的数量就再加1。
当输入完成后,从0号桶到10号桶每个桶中都有了数(当然如果你没输入某个数,它的桶就会一直保持数量为0),那么我们现在可以从0到10(也可以从10到0)依次将桶中的数倒出(桶中有个倒几个),这样就完成排序啦。
标签:shangdixinxi 上地信息