桶排序
来源:互联网 发布:catia软件安装 编辑:程序博客网 时间:2024/05/22 07:59
```#include <iostream>#include <iomanip>using namespace std;const int SIZE=12;int numberOfDigits(int[],int); //求数位void distributeElement(int[],int[][SIZE+1],int); //分布void collectElement(int[],int[][SIZE+1]); //收集void zeroBucket(int[][SIZE+1]); //清空void BucketSort(int[]); // 桶排序int main(){ int Array[SIZE]={19,13,5,27,1,26,31,16,2,9,11,21}; cout<<"The array is :"<<endl; for (int i=0;i<SIZE;i++) cout<<setw(3)<<Array[i]; cout<<endl; BucketSort(Array); cout<<"\nThe new array is :\n"; for (int j=0;j<SIZE;j++) cout<<setw(3)<<Array[j]; system("pause");}void BucketSort(int a[]){ int bucket[10][SIZE+1]={0};//10代表从0~9 10个数字 而size+1为了每个桶可以装下所有的元素 int totaldigit=numberOfDigits(a,SIZE);//计算出数组里最大数的位数 cout<<totaldigit<<endl;//显示出位数 for(int i=1;i<=totaldigit;i++)//先排最低位 最后排最高位 i代表正在排序的位数 { distributeElement(a,bucket,i);//分配 collectElement(a,bucket);//收集 zeroBucket(bucket);//清空桶 }}int numberOfDigits(int a[],int n){ int biggest=a[0]; for(int i=0;i<n;i++)//找到最大的元素 if(a[i]>biggest) biggest=a[i]; int num=0; while(biggest>0)//计算出最大的元素的位数 { num++; biggest/=10; } return num;}void distributeElement(int a[],int bucket[][SIZE+1],int n)//a[]为要排序的数组 buck为桶 n为正在排序的位数{ int digit=10; int bucketnum; for(int i=1;i<n;i++)//利用位数来计算digit 来取第n位上的数字 第一位为10 以此类推 digit*=10; for(int i=0;i<SIZE;i++)//遍历整个数组 { bucketnum=(a[i]%digit-a[i]%(digit/10))/(digit/10);//计算出n位上的数字值 bucket[bucketnum][0]++;//统记n位上的值为bucknum的数的个数 bucket[bucketnum][bucket[bucketnum][0]]=a[i];//依次将n位上的值放到桶中相应的位置上 }}void collectElement(int a[],int bucket[10][SIZE+1]){ int countnum=0; for(int i=0;i<10;i++)//从第0个桶开始收集 for(int j=1;j<=bucket[i][0];j++)//遍历每个桶 a[countnum++]=bucket[i][j];//将元素重新收集到数组里}void zeroBucket(int bucket[10][SIZE+1]){ for(int i=0;i<10;i++) for(int j=0;j<SIZE+1;j++) bucket[i][j]=0;}
“`
1 0
- 【排序算法】桶排序
- 排序算法-桶排序
- 第一章排序----桶排序
- 排序算法-桶排序
- 最快排序--桶排序
- 【排序】桶排序
- 排序之桶排序
- 排序之桶排序
- 排序总结---桶排序
- 排序算法----桶排序
- 排序算法---桶排序
- 【排序之一】桶排序
- 排序:桶排序
- 排序详解:桶排序
- 排序算法:桶排序
- 排序—桶排序
- 排序-桶排序
- 排序算法之--桶排序/radix排序
- android对应颜色值
- 为什么中国的程序员被称为码农?
- 基础练习 6 杨辉三角
- VIM自动补全神器 --- YouCompleteMe 安装全教程
- Android环境搭建
- 桶排序
- GDB使用 常用指令
- Quartz.NET学习系列(十)--- 触发器执行优先级
- 【数据结构】表达式树
- java模式 之抽象工厂模式
- 类加载器以及异常
- 元组类库
- HTML5新增与结构有关的元素
- Solr4.10.2的Tomcat配置