Pagini recente » Cod sursa (job #1795433) | Cod sursa (job #327895) | Cod sursa (job #2478726) | Clasamentul arhivei ACM | Cod sursa (job #2610803)
#include <fstream>
using namespace std;
int partitie ( int a[], int start, int end ){
int poz_pivot = start + rand() % (end - start); // luam pivot random si il mutam pe ultima pozitie
swap(a[poz_pivot],a[end]); // in practica merge mai bine cu pivot random decat cu mediana din 3 sau 5
int pivot = a[end];
int index = start;
int t;
for (int i = start; i < end; i++ ){
if( a[i] <= pivot ){
t = a[i];
a[i] = a[index];
a[index] = t;
index ++;
}
}
t = a[end];
a[end] = a[index];
a[index] = t;
return index;
}
void QuickSort(int v[],int start, int end ){
if ( start < end )
{
int mij = partitie(v,start,end);
QuickSort(v,start,mij - 1);
QuickSort(v, mij+ 1, end);
}
}
int main() {
ifstream f("algsort.in");
ofstream g("algsort.out");
int n;
int array[500001];
f >> n;
for (int i = 0; i < n; ++i)
f >> array[i];
QuickSort(array,0,n - 1);
for (int i = 0; i < n; ++i)
g << array[i] << " ";
g << "\n";
return 0;
}