Pagini recente » Cod sursa (job #973747) | Cod sursa (job #2057109) | Cod sursa (job #1773264) | Cod sursa (job #2831453) | Cod sursa (job #1092169)
#include <fstream>
using namespace std;
const int N = 5e5;
int v[N], n;
ifstream in("algsort.in");
ofstream out("algsort.out");
void bitsort(int st, int dr, int M){
if (!M || dr <= st)
return;
int i = st;
for (int j = dr ; i != j ; ){
while ( i != j && (v[i] & M) == 0 ) i++;
while ( i != j && v[j] & M ) j--;
if (i != j) swap(v[i], v[j]);
}
if (v[i] & M) i--;
M >>= 1;
bitsort(st, i, M);
bitsort(i + 1, dr, M);
}
int main(){
in >> n;
for (int i = 0 ; i < n ; i++)
in >> v[i];
bitsort(0, n - 1, 1 << 30);
for (int i = 0 ; i < n ; i++)
out << v[i] << " ";
out << "\n";
return 0;
}