Pagini recente » Cod sursa (job #713186) | Cod sursa (job #3205740) | Cod sursa (job #813568) | Cod sursa (job #3228943) | Cod sursa (job #2987569)
#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;
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++){
cout<<v[i]<<" ";
}
cout<<v[pivot]<<endl;
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];
index = left;
for(int i=left;i<=right;i++){
v[i] = a[i];
}
for(int i=left;i<=right;i++){
cout<<v[i]<<" ";
}
cout<<endl;
quicksort(left,right-1);
quicksort(left+1,right);
// delete[] a;
}
int main()
{
int x;
f>>n;
for(int i=0;i<n;i++){
f>>v[i];
}
// for(int i=0;i<n;i++){
// for(int j=i+1;j<n;j++){
// if(v[i]>v[j]){
// int aux=v[i];
// v[i] = v[j];
// v[j] = aux;
// }
// }
// }
quicksort(0,n-1);
for(int i=0;i<n;i++){
g<<v[i]<<" ";
}
return 0;
}