Cod sursa(job #3327498)

Utilizator Coman_DianaComan Diana Coman_Diana Data 4 decembrie 2025 10:54:43
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <fstream>

using namespace std;

#define NMAX 500000

int vec[NMAX + 1];

ifstream fin ( "algsort.in" );
ofstream fout ( "algsort.out" );

void my_swap( int &a, int &b ) {
    int aux;
    aux = a;
    a = b;
    b = aux;
}

void sortare ( int vec[], int left, int right, int bitnumber ) {
    if ( left >= right || bitnumber == -1 )
        return;

    int ind_i, ind_j;
    ind_j = left;
    for ( ind_i = left; ind_i <= right; ind_i++ ) {
        if ( (vec[ind_i] & ( 1 << bitnumber )) == 0 ) {
            my_swap( vec[ind_i], vec[ind_j] );
            ind_j++;
        }
    }

    sortare ( vec, left, ind_j - 1, bitnumber - 1 );
    sortare ( vec, ind_j, right, bitnumber - 1 );
}

int main()
{
    int num_n, ind;

    fin >> num_n;
    for ( ind = 0; ind < num_n; ind++ )
        fin >> vec[ind];

    sortare ( vec, 0, num_n - 1, 30 );

    for ( ind = 0 ; ind < num_n; ind++ )
        fout << vec[ind] << " ";
    return 0;
}