Pagini recente » Cod sursa (job #448535) | Cod sursa (job #2136151) | Cod sursa (job #1305824) | Cod sursa (job #2852441) | Cod sursa (job #1708662)
#include <fstream>
#define DIM 500005
using namespace std;
ofstream fout("algsort.out");
int n,v[DIM];
int divide(int st, int dr) {
int i=st,j=dr-1,mij=(st+dr)/2,minim=mij;
if(v[dr]<v[mij])
minim=dr;
if(v[st]>v[minim])
swap(v[st],v[minim]);
if(v[mij]<v[dr])
swap(v[mij],v[dr]);
while(i<j) {
while(v[i]<=v[dr]&&i<j)
i++;
while(v[j]>=v[dr]&&i<j)
j--;
if(i<j) {
swap(v[i],v[j]);
i++,j++;
}
}
swap(v[i],v[dr]);
return i;
}
void quick_sort(int st, int dr) {
if(st<dr) {
int pivot=divide(st,dr);
quick_sort(st,pivot-1);
quick_sort(pivot+1,dr);
}
}
int main()
{
ifstream fin("algsort.in");
fin>>n;
for(int i=1;i<=n;i++)
fin>>v[i];
quick_sort(1,n);
for(int i=1;i<=n;i++)
fout<<v[i]<<" ";
return 0;
}