Pagini recente » Cod sursa (job #2164127) | Cod sursa (job #3252127) | Cod sursa (job #609889) | Cod sursa (job #2966457) | Cod sursa (job #347432)
Cod sursa(job #347432)
#include <fstream>
#include <vector>
#include <limits>
//radix
using namespace std;
int main(){
ifstream in("algsort.in");
ofstream out("algsort.out");
int n;in>>n;
vector<int> v;v.reserve(n);
for(int i=0;i<n;i++){
int t;in>>t;v.push_back(t);
}
vector<int> one;one.reserve(n);
vector<int> zero;zero.reserve(n);
for(int bit=1;bit!=numeric_limits<int>::min();bit=bit<<1){
///must move eficiently
for(int i=0;i<n;++i){
if(v[i]&bit) one.push_back(v[i]);
else zero.push_back(v[i]);
}
v=zero;v.insert(v.end(),one.begin(),one.end());
zero.clear();one.clear();
}
for(int i=0;i<n;i++){
out<<v[i]<<" ";
}
}