Cod sursa(job #3227067)

Utilizator RosheRadutu Robert Roshe Data 25 aprilie 2024 00:46:28
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
#define limit 500000

using namespace std;


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

int partition(unsigned int* A, int l, int r){
  int index = l-1;
  for(int i = l; i < r; i++){
    if(A[i] >= A[r])
      continue;
    int aux = A[i];
    A[i] = A[index+1];
    A[index+1] = aux;
    index = index + 1;
  }
  int aux = A[index+1];
  A[index+1] = A[r];
  A[r] = aux;
  return index + 1;
}

void quicksort(unsigned int* A, int l, int r){
  if(l < r){
    int pi = partition(A, l, r);
    quicksort(A, l, pi-1);
    quicksort(A, pi+1, r);
  }
}

int main(){
  unsigned int A[limit];
  int N;
  fin >> N;
  for(int i = 0; i<N; i++){
    fin >> A[i];
  }
  quicksort(A, 0, N-1);
  for(int i = 0; i<N; i++)
    fout << A[i] << " ";
}