基数排序

来源:互联网 发布:linux网吧视频服务器 编辑:程序博客网 时间:2024/06/06 17:20
//基数排序#include <iostream>#include <vector>#include <queue>using namespace std;class RadixSort{public:void radixSort(vector<int>& v, int d);//基数排序//v 要排序的向量,d 排序数字的位数void distribute(const vector<int>& v, int power);//将排序的数字按位数分发到队列中void collect(vector<int>& v);//从队列中收集数字void print(const vector<int>& v);//打印排序好的向量private:queue<int> digitQueue[10];};void RadixSort::radixSort(vector<int>& v, int d){int i, power = 1;for (i = 0; i < d; i++){distribute(v, power);collect(v);power *= 10;}}void RadixSort::distribute(const vector<int>& v, int power){int i;for (i = 0; i < v.size(); i++){digitQueue[(v[i] / power) % 10].push(v[i]);}}void RadixSort::collect(vector<int>& v){int i, j = 0;for (i = 0; i < 10; i++){while (!digitQueue[i].empty()){v[j] = digitQueue[i].front();digitQueue[i].pop();j++;}}}void RadixSort::print(const vector<int>& v){int i;for (i = 0; i < v.size(); i++){cout << v[i] << " ";}cout << endl;}

原创粉丝点击