Cod sursa(job #3003902)

Utilizator RobertJmekRobert RobertJmek Data 15 martie 2023 23:57:28
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.48 kb
#include<iostream>
#include <time.h>
#include<unistd.h>
using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

int max(int vec[], int n)
{
    int nrMax=vec[0];
    for( int i = 1; i < n; i++ )
    {
        if ( vec[i] > nrMax )
            nrMax = vec[i];
    }

    return nrMax;
}

void Sort(int vec[], int n, int digit)
{
    int finalvec[n];
    int i, count[10] = {0};
    for ( i = 0; i < n; i++)
    {
        count[(vec[i] / digit) % 10]++;
    }
    for ( i = 1; i < 10; i++ )
    {
        count[i] += count[i - 1];
    }
    for ( i = n - 1; i >= 0; i-- )
    {
        finalvec[count[(vec[i] / digit ) % 10] - 1 ] = vec[i];
        count[(vec[i] / digit) % 10 ]--;
    }
    for ( i = 0; i < n; i++)
        vec[i] = finalvec[i];
}

void radix( int vec[], int n)
{
    int ma=max(vec, n);
    for ( int digit = 1; ma / digit > 0; digit *= 10 )
        Sort(vec,n,digit);
}

bool sort_test(int vec[],int n)
{   
    bool ok=true;
    for ( int i=0; i < n-1; i++ )
    {
        if ( vec[i+1] < vec[i] )
            ok = false;
    }
    return ok;
}

int main()
{
    int n;
    f >> n;
    int vec[n+1]; 
    for ( int i=0; i<n; i++)
        f<<vec[i];
///    int n = sizeof(vec) / sizeof(vec[0]);
///    clock_t start = clock();
    radix(vec,n);
    for ( int i=0; i<n; i++)
        g >> vec[i];
///    clock_t end = clock();
///    double elapsed = double(end - start)/CLOCKS_PER_SEC;
///    printf("Time measured: %.9f seconds.\n", elapsed);
 ////   cout<<sort_test(vec,n);
}