每日一算法之计数排序
2014-04-01 17:55
204 查看
计数排序的基本思想是:对输入序列的每一个元素X,确定小于X的元素的个数,这样就可以直接把X放到相应的位置了。需要特殊注意的地方就是有元素相同时
。因为不能把相同元素放到同一位置。上代码:
// CountSort // // Created by zhaowei on 14-4-1. // Copyright (c) 2014年 zhaowei. All rights reserved. // 计数排序的输入序列在区间(0,k)。计数排序是稳定的 #include <iostream> using namespace std; void countSort(int *a,int *b,int k,int len){//a[0]不参加排序 int *c = new int[k]; for (int j = 1; j<len; j++) c[a[j]]+=1; for (int i = 1; i<k; i++) c[i] = c[i]+c[i-1]; for (int j = len-1; j>0; j--) { b[c[a[j]]] = a[j]; c[a[j]]-=1; } } int main(int argc, const char * argv[]) { // insert code here... int a[10] = {0,2,4,3,5,7,4,9,8,6}; int b[10]; for(int i = 1;i<10;i++) cout<<a[i]<<" "; cout<<endl; countSort(a, b, 10, 10); for(int i = 1;i<10;i++) cout<<b[i]<<" "; cout<<endl; return 0; }
相关文章推荐
- 用递归函数和栈操作逆序一个栈(每日一道算法题)
- 算法每日一练
- 算法之每日一题:有趣的数
- 每日算法: 选择排序,冒泡排序
- 【牛客网】直通bat-面试算法精品课_第2章 排序 2.10 计数排序练习题(JAVA版)
- 每日算法练习之最大公约数最小公倍数
- scala数据结构和算法-10-计数排序
- 每日一题(33)——用两个栈实现一个队列的功能?要求给出算法和思路
- 经典算法题每日演练——第十八题 外排序
- java每日小算法(1)
- 每日一道算法题2——定义一个栈,提供一个返回栈里最小元素方法
- 经典算法题每日演练——第一题 百钱买百鸡
- 经典算法题每日演练——第十四题 Prim算法
- 算法学习每日一练0
- 【算法导论】线性时间排序-计数排序、基数排序及桶排序
- 经典算法题每日演练——第二题 五家共井
- 经典算法题每日演练——第三题 猴子吃桃
- 数据结构与算法总结——排序(三)桶排序,计数排序和基数排序
- 每日一算法8--中文乱码转换
- 经典算法题每日演练——第二十一题 十字链表