计数排序
2016-07-14 14:03
204 查看
#include<iostream> #include<cstdlib> using namespace std; void CountingSort(int *a,int n) { int max=a[0],min=a[0]; for(int i=0; i<n; i++)//找到最大值 { if(a[i]>max) max=a[i]; if(a[i]<min) min=a[i]; } int temp=max-min+1;//计算跨度 int b[temp]= {0}; for(int i=0; i<n; i++) //统计数组中每个值为a[i]的元素出现的次数 b[a[i]-min]++; int t=0; for(int i=0; i<temp; i++) //计算前边一共有多少数 { if(b[i]!=0) { b[i]+=t; t=b[i]; } } for(int i=0; i<n; i++) //把a中所有数标记为max+1,max+1代表没有数据 a[i]=max+1; for(int i=0; i<temp; i++) //将数放入a if(b[i]!=0) a[b[i]-1]=i+min; for(int i=n-1; i>=0; i--) //把那些重复的数放进去 if(a[i]==max+1) a[i]=a[i+1]; } void print(int *a,int n) { for(int i=0; i<n; i++) cout<<*(a+i)<<" "; cout<<endl; } int main() { int a[10]= {15,11,14,19,16,13,17,18,12,10}; print(a,10); CountingSort(a,10); print(a,10); }
相关文章推荐
- CNKI PDF 全文下载用户脚本
- monkey环境搭建
- 二叉搜索树JAVA实现
- NodeJS学习系列课程笔记(NodeJs Stream 的相关使用方法)
- 深入理解javascript原型和闭包(6)——继承
- java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
- Ubuntu版本号查询
- JS生成指定范围内的随机数
- win7 64位系统不支持curl解决办法
- IT--linux--排错--log
- python md5计算
- 大众点评cat接入记录
- asp.net SessionState之sqlserver模式
- 深入理解javascript原型和闭包(5)——instanceof
- 深入理解javascript原型和闭包(4)——隐式原型
- elasticsearch进行parent/child类型聚合的测试
- 读取按照自己的规则保存到sd卡中的字节文件
- 动态添加RadioGroup组件的RadioButton出现多选状况解决
- OpenStack Icehouse Installation: Two-node architecture with legacy networking (nova-network)
- merge conflicts with git