假设期末考试了,该考试满分10分,有五个同学参加了这场考试,分别得分5分,3分,5分,2分,8分。现在我们需要对他们分数进行排序,首先创建一个一维数组a[11]表示分数,也就是所谓的“桶”,然后将其初值均赋值0,表示没有人得过这个分数。
现在我们需要录入分数了,于是变成了这样
然后只需要将出现过的分数打印出来就好了
这是代码
#include<iostream>
using namespace std;
void Bucket_sort(int a[],int num_Of_Bucket,int size){
int t;
for(int i=1;i<=num_Of_Bucket;i++){//将桶的初值赋值0
a[i]=0;
}
for(int i=1;i<=size;i++){//输入数据
cin>>t;
a[t]++;
}
for(int i=1;i<=num_Of_Bucket;i++){//打印
for(int j=1;j<=a[i];j++){
cout<<i<<" ";
}
}
}
int main(){
int a[5];
Bucket_sort(a,10,5);
}
简易桶排序的弊端也是十分明显的,这里最高分为10分,于是需要申请一个a[11]的数组,那么最高分为1000000000000甚至更高呢?那么你就需要申请一个a[1000000000001]的数组,即便你只需要排序五个数,比如1,2,3,4,1000000000000,这显然是十分浪费空间的。