基数排序
2015-09-29 17:12
260 查看
基数排序:
#include <iostream> #include <queue> #include <vector> #include <ctime> #include <cstdio> #include <cstdlib> using namespace std; #define MAXN 100 // number of entry to sort #define c 100000 // the entry used to sort is of [0, c) unsigned long ulrand(void) { // generate rand entry return ( (((unsigned long)rand()<<24)&0xFF000000ul) // ul means unsigned long |(((unsigned long)rand()<<12)&0x00FFF000ul) |(((unsigned long)rand() )&0x00000FFFul)); } void RadixSort(vector<int>& v, int MaxLen){ queue <int> digit_bin[10]; //is used to carry 0~9 int digit = 1; for(int num_of_digit = 0; num_of_digit < MaxLen; num_of_digit++){ // MAX length of num is 6 for(int i = 0; i < v.size(); i++){ digit_bin[ (v[i] / digit) % 10 ].push(v[i]); } int index = 0; for(int i = 0; i < 10; i++) while( !digit_bin[i].empty() ){ v[index++] = digit_bin[i].front(); digit_bin[i].pop(); } digit *= 10; } } int main(){ int num; srand(time(0)); vector<int> v; for(int i = 0; i < MAXN; i++){ num = ulrand()%c; // num of [0, c), MAXLen is 6 digits v.push_back(num); } RadixSort(v, 6); for(int i = 0; i < v.size(); i++) cout << v[i] << endl; return 0; }
相关文章推荐
- 判断手机号格式是否正确(写于2015年,过期时间未知)
- 2015第40周二Node学习
- 在本机搭建mycat 单机环境,使用mariadb 伪集群
- 在GitHub多个帐号上添加SSH公钥
- android文件读写
- uwsgi os没有uname()方法的解决办法
- linux常用命令(58):cal命令
- IOS之同步请求、异步请求、GET请求、POST请求
- 框架使用从Maven开始
- linux内存管理-内核用户空间 【转】
- 数据库连接池的作用
- 使用bs4对海投网内容信息进行提取并存入mongodb数据库
- ubuntu14.04安装OpenCV-3.0.0
- 什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI?
- 试卷分析
- 水表图片测试的逻辑
- FragmentTabhost+fragment+viewpager+FragmentActivity的使用
- 《当幸福来敲门》观后感
- 重写构造方法
- LOG_ARCHIVE_DEST_STATE_n=alternate