Cod sursa(job #976148)

Utilizator Daniel3717Aleca Daniel Adrian Daniel3717 Data 22 iulie 2013 17:03:36
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
using namespace std;
int n,i;
int v[500001];
void radixsort(int *a, int n)
{
  int i, b[n+5], m = a[0], exp = 1 , k=0;
  for (i = 0; i < n; i++)
  {
    if (a[i] > m)
      m = a[i];
  }

  while ((m / exp > 0)&&(k<9))
  {
      k++;
    int bucket[10] =
    {  0 };
    for (i = 0; i < n; i++)
      bucket[(a[i] / exp) % 10]++;
    for (i = 1; i < 10; i++)
      bucket[i] += bucket[i - 1];
    for (i = n - 1; i >= 0; i--)
      b[--bucket[(a[i] / exp) % 10]] = a[i];
    for (i = 0; i < n; i++)
      a[i] = b[i];
    exp *= 10;
  }
}
int main(void)
{
    FILE * f;
    f=fopen("algsort.in","r");
    ofstream g("algsort.out");
    fscanf(f,"%d",&n);
    for (i=0;i<n;i++)
        fscanf(f,"%d",&v[i]);
    radixsort(v,n);
    for (i=0;i<n;i++)
        g<<v[i]<<' ';
    g.close();
    return 0;
}