1️⃣7️⃣ 基数排序
❔ radixsort函数可以理解,但是要自己敲出来有点困难,还要多多复习~
#include <iostream>
#include <vector>
#include <list>
using namespace std;
int maxdigit(vector<int> &a){
int d = 1;
int p = 10;
for(int i=0; i<a.size(); i++){
while(a[i] >= p){
p *= 10;
d++;
}
}
return d;
}
void radixsort(vector<int> &a){
int digits = maxdigit(a);
list<int> lists[10];
int d, j, k, factor;
for(d=1, factor=1; d<=digits; d++, factor*=10){
for(j=0; j<a.size(); j++){
lists[(a[j]/factor)%10].push_back(a[j]);
}
for(j=k=0; j<10; j++){
while(!lists[j].empty()){
a[k++] = lists[j].front();
lists[j].pop_front();
}
}
}
}
int main(){
vector<int> a{179,208,4,306,93,984,55,2132,271,33};
radixsort(a);
for(int i=0; i<a.size(); i++)
cout << a[i] << " ";
return 0;
}