本文主要介绍C桶排序,通过示例代码非常详细的介绍,对大家的学习或者工作有一定的参考价值。有需要的朋友下面和边肖一起学习。
一.想法
就是把区间[0,1]分成n个等长的子区间。然后将每个元素按照自己的区间放入对应的桶中,只需要将每个桶中的元素按顺序排列,依次输出每个桶中的元素,得到一个有序的元素序列。
二、实施方案:
#包括iostream
使用命名空间std
const int offset=105//是桶的边界。
const int maxSize=100//数组的最大存储范围
//桶排序
模板类型名T
void BucketSort(T arr[],int n);
//输出数组
模板类型名T
void Print(T arr[],int n);
int main(int argc,const char * argv[]) {
int n,I,arr[maxSize];
Cout '请输入要排序的数字个数:';
CIN n;
srand((int)time(NULL));//将时间设置为一个随机点
for(I=0;I n;I) //生成N个随机数
arr[I]=rand()% 100;
排序前的“Cout”:
Print(arr,n);
BucketSort(arr,n);//调用存储桶排序
排序后为“STD:cout”;
Print(arr,n);
返回0;
}
模板类型名T
void BucketSort(T arr[],int n) {
int i,j;
t桶[偏移量];
for(I=0;我抵消;I) //清除
桶[I]=0;
//1.计数并将数组arr中的元素放入桶中
for(I=0;I n;我)
buckets[arr[I]];//将arr[i]的值对应到buckets数组的下标,每个值加1。
//2.分类
for(i=0,j=0;我抵消;i ) {
While(buckets[i] 0) {//表示有元素,同一个整数,要重复输出。
arr[j]=I;
桶[I]-;
j;
}
}
}
//输出数组
模板类型名T
void Print(T arr[],int n) {
int I;
for(I=0;I n;我)
cout arr[I]' ';
cout endl
}
测试结果:
以上是边肖介绍的C桶排序的详细讲解和集成。希望对你有帮助。如果您有任何问题,请给我留言,边肖将及时回复您。非常感谢您对我们网站的支持!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。