基数排序
来源:互联网 发布:淘宝上买什么 编辑:程序博客网 时间:2024/06/06 12:22
#include "stdafx.h"void Counting_Sort(int a[], int b[], int k, int len){ int c[100] = { 0 }, temp[100] = { 0 }; for (int j = 0; j < len; ++j) //统计等于i的个数 { ++c[a[j]]; } for (int i = 1; i < k + 1; ++i) //统计小于等于i的个数 { c[i] = c[i] + c[i - 1]; } for (int i = len - 1; i > -1; --i) //从a数组末尾开始赋值 { temp[c[a[i]] - 1] = b[i]; //数组序号从0开始,故需先减一;b中元素(原有数组元素)与a中元素(某位元素)对应,因此可以直接将b中元素(原有数组元素)放入暂存数组相应位置 --c[a[i]]; } for (int i = len - 1; i > -1; --i) //再将暂存数组中的元素复制到原有数组中,更新原有数组的排序 { b[i] = temp[i]; }}void Radix_Sort(int a[],int b[],int d,int len){ for (int i = 1; i < d+1; ++i) //i代表位数 { for (int m = 0; m < len ; ++m) //m代表元素数 { switch (i) { case 1: b[m] = a[m] % 10; //取最低位 break; case 2: b[m] = a[m] / 10 % 10; //取第二低位 break; case 3: b[m] = a[m] / 100 % 10; //取第三低位 break; case 4: b[m] = a[m] / 1000 % 10; //取第四低位 break; default: break; } } Counting_Sort(b, a, 9, len); }}int _tmain(int argc, _TCHAR* argv[]){ int a[] = { 123, 419, 914, 391, 456, 217, 666, 999 }; int len = sizeof(a) / 4; int b[sizeof(a) / 4] = { 0 }; Radix_Sort(a, b,3, len); for (int i = 0; i < len; ++i) { cout << a[i] << endl; } return 0;}
0 0
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 搭建maven+spring+freemaker+mybatis环境之一
- Dom4j中的中文编码问题
- 浮动
- 计数排序
- 【悟】终于入手PS4
- 基数排序
- python和php的面向对象
- js子窗体与父窗体
- 桶排序
- 网络设备将网口切换到业务板以后为什么会报各种不正确的信息?
- 1029. Median (25)
- Unity编程笔录--Unity Android加密dll
- VS2010远程调试 (2)
- Struts2系统学习(15)Struts2校验框架基本原理分析