Cod sursa(job #2274610)

Utilizator richard26Francu Richard richard26 Data 2 noiembrie 2018 10:20:40
Problema Sortare prin comparare Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>
	
 
	
using namespace std;
	
 
	
ifstream f("algsort.in");
	
ofstream g("algsort.out");
	
 
	
int arr[500001];
	
void swp(int &a, int &b)
	
{
	
 int aux;
	
 aux = a;
	
 a = b;
	
 b = aux;
	
}
	
int part(int st, int dr)
	
{
	
    int pivot = arr[(st + dr) / 2];
	
    int i, j;
	
    i = st;
	
    for(j = st; j <= dr; j++){

    	
	
        if(arr[j] <= pivot){
	
         if(i != j) swp(arr[j], arr[i]);
	
         i++;
	
        }
	
    }
	
    swp(arr[i - 1], arr[(st + dr) / 2]);
	
    return i - 1;
	
}
	
 
	
void quicksort(int l, int r)
	
{
	
    //cout<<l<<" "<<r<<" ";
	
    if(l < r){
	
    int p = part(l,r);
	
    quicksort(l, p - 1);
	
    quicksort(p + 1, r);
	
    }
	
}
	
int main()
	
{
	
    int n, i;
	
 
	
    f>>n;
	
 
	
    for( i = 1; i <= n; i++) f>>arr[i];
	
    //for( i = 1; i <= n; i++) g<<arr[i]<<" ";
	
    quicksort(1,n);
	
    for( i = 1; i <= n; i++) g<<arr[i]<<" ";
	
 
	
    return 0;
	
}