Pagini recente » Cod sursa (job #3129128) | Cod sursa (job #707019) | Cod sursa (job #991610) | Cod sursa (job #1944020) | Cod sursa (job #2988992)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[500003]={0};
int a[500003]= {0};
int n;
void quicksort(int left, int right){
if(left>=right) return;
srand(left);
int pivot = rand() % (right-left+1) + left;
// int* a = new int[right-left+1];
int index = left,last = right;
for(int i=left;i<=right;i++){
if(v[i] < v[pivot]){
a[index++] = v[i];
}
else if(v[i] > v[pivot]){
a[last--] = v[i];
}
else{
if(v[i] == v[pivot] && i!=pivot){
a[index++] = v[i];
}
}
}
a[index] = v[pivot];
for(int i=left;i<=right;i++){
v[i] = a[i];
}
quicksort(left,index-1);
quicksort(index+1,right);
// delete[] a;
}
int main()
{
int x;
f>>n;
for(int i=0;i<n;i++){
f>>v[i];
}
quicksort(0,n-1);
for(int* i=v;*i < *(i+1);i++){
g<<*i<<" ";
}
return 0;
}