Pagini recente » Cod sursa (job #104011) | Cod sursa (job #2358203) | Cod sursa (job #924122) | Cod sursa (job #1863905) | Cod sursa (job #3003482)
#include <iostream>
#include <fstream>
#include <string.h>
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(time(NULL));
int pivot = rand() % (right-left+1) + left;
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];
// }
memcpy(v+left, a+left, (right-left+1) * 4);
quicksort(left,index-1);
quicksort(index+1,right);
}
int main()
{
int x;
f>>n;
for(int i=0;i<n;i++){
f>>v[i];
}
quicksort(0,n-1);
for(int i=0;i<n;i++){
g<<v[i]<<" ";
}
return 0;
}