Pagini recente » Cod sursa (job #250164) | Cod sursa (job #2551993) | Cod sursa (job #219587) | Cod sursa (job #2940000) | Cod sursa (job #1011987)
#include <fstream>
#include <iterator>
#include <algorithm>
using namespace std;
void MSDRadix ( int arr[], int begin, int end, int msb = 31 ) {
if (begin != end && msb >= 0) {
int mid = std::partition(arr + begin, arr + end, [&msb](int value){if (msb == 31) return value < 0; else return !(value & (1 << msb)); }) - arr;
--msb; // decrement most-significant-bit
MSDRadix(arr, begin, mid, msb); // sort left partition
MSDRadix(arr, mid, end, msb); // sort right partition
}
}
int main()
{
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int n; cin >> n;
int v[500001];
for(int i = 0; i < n; i++)
cin >> v[i];
radixSort(v, n);
for(int i = 0; i < n; i++)
cout << v[i] << " ";
cin.close();
cout.close();
return 0;
}