Cod sursa(job #1011987)

Utilizator bghimisFMI Ghimis Bogdan bghimis Data 17 octombrie 2013 20:44:12
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#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;
}