《算法导论》的基数排序 C++实现
来源:互联网 发布:淘宝怎么用余额宝分期 编辑:程序博客网 时间:2024/05/17 07:48
#include<iostream>#include<vector>using namespace std;typedef struct Node{int data; //数值int ge;//位值int shi;int bai;}Node;void CountSort(vector<Node> A, vector<Node> &B, int k,int n,int bit){int i,j;vector<int> C(k+1, 0);if (bit == 0) //先排序个位{for (i = 0; i < n; i++)C[A[i].ge] = C[A[i].ge] + 1;for (j = 1; j <= k; j++)C[j] = C[j] + C[j - 1];for (j = n - 1; j >= 0; j--){B[C[A[j].ge]] = A[j];C[A[j].ge] = C[A[j].ge] - 1;}}if (bit == 1) //排序十位{for (i = 0; i < n; i++)C[A[i].shi] = C[A[i].shi] + 1;for (j = 1; j <= k; j++)C[j] = C[j] + C[j - 1];for (j = n - 1; j >= 0; j--){B[C[A[j].shi]] = A[j];C[A[j].shi] = C[A[j].shi] - 1;}}if (bit == 2) //排序百位{for (i = 0; i < n; i++)C[A[i].bai] = C[A[i].bai] + 1;for (j = 1; j <= k; j++)C[j] = C[j] + C[j - 1];for (j = n - 1; j >= 0; j--){B[C[A[j].bai]] = A[j];C[A[j].bai] = C[A[j].bai] - 1;}}}void RadixSort(vector<Node> &A, vector<Node> &B, int k, int n,int bit){int i;for (i = 0; i < bit; i++)CountSort(A, B, k, n,i);}int main(void){vector<Node> A;int i,ge,shi,bai;Node temp;int s[8] = { 329, 457, 657, 839, 436, 720, 355, 999 };vector<Node> B;//预留空间大一点,防止边界溢出,因为C[A[j]]不会为0 B从1下标开始for (i = 0; i < 9; i++)B.push_back({ 0, 0, 0, 0 });for (i = 0; i < 8; i++) //把数据添加到A中{bai = s[i] / 100;shi = s[i] % 100 / 10;ge = s[i] % 100 % 10;temp = { s[i], ge, shi, bai };A.push_back(temp); }RadixSort(A, B, 10, 8, 3);for (auto i = 1; i < 9;i++)cout << B[i].data << " ";cout << endl;return 0;}
0 0
- 《算法导论》的基数排序 C++实现
- 算法导论第八章伪码转C++_基数排序
- 《算法导论》 8.3 基数排序
- 【算法导论】基数排序
- 基数排序----算法导论
- 算法导论 基数排序
- 基数排序的C实现
- 《算法导论》CLRS算法C++实现(六)P100 基数排序
- 《算法导论》中红黑树的C语言实现
- 算法导论笔记(五) :基数排序与C++实现
- 基数排序算法的C++实现
- 算法导论CLRS 8.3 基数排序
- 《算法导论》学习之基数排序
- 基数排序的C语言实现
- 排序算法C++&&Python实现---基数排序
- 算法导论-----排序的9种实现(C/C++)
- 算法导论 - 归并排序的 C 语言实现
- 算法导论 - 快速排序的 C 语言实现
- K&C 式样的函数定义
- mac下192.168.2.1引起的连接问题
- Ztree 相关.
- 合并两个递增的列表
- opencv 图片读写,截取,复制,标记
- 《算法导论》的基数排序 C++实现
- Linux centOS下修复“运行aclocal失败:没有该文件或目录”
- 《HTTP权威指南》阅读笔记(七)
- 最长上升子序列、最长下降子序列的DP算法由O(n^2)到O(nlogn)算法
- php/mysql实现搜索功能
- Html5拖放小例
- 过去是行不通的
- 剑指offer面试题28-字符串的排列
- 通过网络挖掘检测谣言和误信息(2015)