大家好,今天给大家带来c++的桶排序
桶排序
他的功能是去重并排序
给大家举个例子
int sun=5 4 3 2 1
bool sum 下标1 2 3 4 5
第一次循环后 i=5 sum[5]=1 sum=0 0 0 0 1
第二次循环后 i=4 sum[4]=1 sum=0 0 0 1 1
第三次循环后 i=3 sum[3]=1 sum=0 0 1 1 1
第四次循环后 i=2 sum[2]=1 sum=0 1 1 1 1
第五次循环后 i=1 sum[1]=1 sum=1 1 1 1 1
结果是 1 2 3 4 5
再来个例子
int sun=5 3 5 1 1
bool sum 下标1 2 3 4 5
第一次循环后 i=5 sum[5]=1 sum=0 0 0 0 1
第二次循环后 i=3 sum[3]=1 sum=0 0 1 0 1
第三次循环后 i=5 sum[5]=1 sum=0 0 1 0 1
第四次循环后 i=1 sum[1]=1 sum=1 0 1 0 1
第五次循环后 i=1 sum[1]=1 sum=1 0 1 0 1
结果是 1 3 5
大家应该能发现他的逻辑
代码就很好写了
奉出
#include <iostream>
#define N 100001
using namespace std;
int main()
{
int a,sun[N],s=0,n=1;//定义
bool sum[N];
cin>>a;
for(int i=1;i<=a;i++){//循环输入
cin>>sun[i];
}
for(int i=1;i<=a;i++){//桶排序
s=sun[i];
sum[s]=1;
}
for(int i=1;i<=N;i++){//循环输出
if(sum[i]){//如果比0的执行
cout<<n<<" ";
}
n++;
}
return 0;//养成好习惯
}
结果
谢谢观看