桶排序
前言
学生党,手写一下桶排序(桶内的排序基于之前已经实现的单调队列)
桶排序代码
void bucket_sort(int a[],int len,int bucket_size){
int _min = INT_MAX, _max = INT_MIN;
for(int i=0;i<len;i++){
if(_min>a[i]){
_min = a[i];
}
if(_max<a[i]){
_max = a[i];
}
}
int bucket_cnt = (_max-_min)/bucket_size+1;
priority_queue<int,vector<int>,greater<int> > q[bucket_cnt];
for(int i=0;i<len;i++){
q[(a[i]-_min)/bucket_size].push(a[i]);
}
int cnt=0;
for(int i=0;i<bucket_cnt;i++){
while(q[i].size()>0){
a[cnt++] = q[i].top();
q[i].pop();
}
}
return;
}
总结
欢迎交流