【刷题之路】计数排序
2016-05-30 21:36
274 查看
经典算法
class CountingSort {
public:
int* countingSort(int* A, int n) {
// write code here
int max=A[0],min=A[0],i,j=0,diff;
for(i=0;i<n;i++){ //寻找最大与最小值,确定数组大小
if(max<A[i]) max=A[i];
if(min>A[i]) min=A[i];
}
diff=max-min+1;
vector<int> temp(diff,0); //根据diff确定数组大小
for(i=0;i<n;i++){
temp[A[i]-min]++; //遇到某一个数,减去min即可从零开始,计数
}
for(i=0;i<diff;i++){
while(temp[i]>0){
A[j++]=min+i; //遍历A,根据计数重新生成数组
temp[i]--;
}
}
return A;
}
};
class CountingSort {
public:
int* countingSort(int* A, int n) {
// write code here
int max=A[0],min=A[0],i,j=0,diff;
for(i=0;i<n;i++){ //寻找最大与最小值,确定数组大小
if(max<A[i]) max=A[i];
if(min>A[i]) min=A[i];
}
diff=max-min+1;
vector<int> temp(diff,0); //根据diff确定数组大小
for(i=0;i<n;i++){
temp[A[i]-min]++; //遇到某一个数,减去min即可从零开始,计数
}
for(i=0;i<diff;i++){
while(temp[i]>0){
A[j++]=min+i; //遍历A,根据计数重新生成数组
temp[i]--;
}
}
return A;
}
};
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- C++计数排序详解
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析
- C++实现汉诺塔算法经典实例