排序有很多种方法,今天我要讲的是桶排序。
桶排序这个名字就是由它的原理而来,就是将输入每个元素放进,对应的桶里面,然后再按顺序将每个桶中的元素输出出来。如下图所示:
#include<iostream>
using namespace std;
int a[100],b[100],n; //待排序数组a、“桶”数组b、元素个数n
int main(){
cin>>n;
int mmax=-1; //创建一个存放最大元素的变量
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){ //这个循环就是将每个元素放入对应的“桶”里,并记录最大值
int x=a[i];
mmax=max(a[i],mmax);
b[x]++;
}
for(int i=1;i<=mmax;i++){ //输出直到最大的元素
for(int j=0;j<b[i];j++){
cout<<i<<" ";
}
}
return 0;
}
下面就是程序的主要部分:
for(int i=1;i<=n;i++){ //这个循环就是将每个元素放入对应的“桶”里,并记录最大值。
int x=a[i];
mmax=max(a[i],mmax);
b[x]++;
}
------------------------------------------------------------------------------------------------------------------
懂了重要部分就可以看一下完整程序了:
#include<iostream>
using namespace std;
int a[100],b[100],n; //待排序数组a、“桶”数组b、元素个数n
int main(){
cin>>n;
int mmax=-1; //创建一个存放最大元素的变量
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){ //这个循环就是将每个元素放入对应的“桶”里,并记录最大值
int x=a[i];
mmax=max(a[i],mmax);
b[x]++;
}
for(int i=1;i<=mmax;i++){ //输出直到最大的元素
for(int j=0;j<b[i];j++){
cout<<i<<" ";
}
}
return 0;
}