Cod sursa(job #2514990)

Utilizator alex_benescuAlex Ben alex_benescu Data 27 decembrie 2019 15:30:34
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define L 500003
int v[L], w[L], n;
using namespace std;
void qsort(int st, int dr){
  int p, q1, q2, i, cq1;
  if(st>=dr)
    return;
  p=rand()%(dr-st+1)+st;
  q1=st;
  q2=dr;
  for(i=st; i<=dr; i++)
    if(v[i]<v[p])
      w[q1++]=v[i];
    else if(v[i]>v[p])
      w[q2--]=v[i];
  cq1=q1-1;
  for(; q1<=q2; q1++)
    w[q1]=v[p];
  for(i=st; i<=dr; i++)
    v[i]=w[i];
  qsort(st, cq1);
  qsort(q2+1, dr);
}
int main(){
  FILE *fin, *fout;
  int i;
  fin=fopen("algsort.in", "r");
  fout=fopen("algsort.out", "w");
  fscanf(fin, "%d", &n);
  for(i=1; i<=n; i++)
    fscanf(fin, "%d", &v[i]);
  srand(time(0));
  qsort(1, n);
  for(i=1; i<=n; i++)
    fprintf(fout, "%d ", v[i]);
  fclose(fin);
  fclose(fout);
  return 0;
}