Cod sursa(job #3031018)

Utilizator Razvan2699Mircea Andrei Razvan Razvan2699 Data 18 martie 2023 12:16:07
Problema Sortare prin comparare Scor 0
Compilator cpp-32 Status done
Runda Arhiva educationala Marime 1.11 kb
#include<fstream>
#include <iostream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");


int maxim(int v[], int n)
{
    int maxx = v[0];
    for (int i = 1; i < n; i++)
        if (v[i] > maxx)
            maxx = v[i];
    return maxx;
}


void countSort(int v[], int n, int exp)
{
    int aux[n];
    int i, digit[10];

    for(i=0;i<=9;i++)
        digit[i]=0;


    for (i = 0; i <n; i++)
        digit[(v[i] / exp) % 10]++;



    for (i = 1; i < 10; i++)
        digit[i] += digit[i - 1];


    for (i = n - 1; i >= 0; i--) {
        aux[digit[(v[i] / exp) % 10] - 1] = v[i];
        digit[(v[i] / exp) % 10]--;
    }

    for (i = 0; i < n; i++)
        v[i] = aux[i];

}

void radixsort(int v[], int n)
{
    int m = maxim(v, n);



    int exp=1;
    while(m/exp>0){

        countSort(v,n,exp);
    exp*=10;
    }

}

int main()
{
    int v[1000],x;
    int n=0;

    while(in>>x)
    {
        v[n]=x;
        n++;
    }


      radixsort(v, n);

    for (int i = 0; i < n; i++)
        out << v[i] << " ";
    return 0;
}