Pagini recente » Cod sursa (job #2356384) | Cod sursa (job #1675942) | Cod sursa (job #94915) | Cod sursa (job #2122687) | Cod sursa (job #3003516)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
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()
{
FILE* f = fopen("algsort.in", "r");
FILE* g = fopen("algsort.out", "w");
fscanf(f, "%d", &n);
// fscanf(f, " ");
// printf("%d\n", n);
// for(int i=0;i<n;i++){
// f>>v[i];
// }
for(int i=0;i<n;i++){
fscanf(f, "%d", &v[i]);
// printf("%d ", v[i]);
}
// fread(v, sizeof(int), n, f);
quicksort(0,n-1);
for(int i=0;i<n;i++){
// printf("%d ", v[i]);
fprintf(g, "%d ", v[i]);
}
return 0;
}