Pagini recente » Cod sursa (job #720488) | Profil Arsene_Denisa | Cod sursa (job #311566) | Cod sursa (job #2273184) | Cod sursa (job #241567)
Cod sursa(job #241567)
#include<fstream>
#include<algorithm>
using namespace std;
int a[500009];
int part(int st,int dr,int& ok){
int i, j,ii, jj,aux;
i=st;j=dr;
ii=1;
jj=0;
while(i<j){
if(a[i]>a[j]){
swap(a[i],a[j]);
aux=-ii;
ii=-jj;
jj=aux;
ok++;
}
i+=ii;j+=jj;
}
return i;
}
void bubblesort(int st, int dr){
int ok=1;int i;
while(ok){
ok=0;
for(i=st+1;i<=dr;i++)
if(a[i-1]>a[i])
swap(a[i],a[i-1]),ok=1;
}
}
void sortrap(int p, int u){
if(p<u){
int ok=0;
int m=part(p,u,ok);
if(ok>11){
sortrap(p,m-1);
sortrap(m+1,u);
}
else{
bubblesort(p,u);
}
}
}
int main(){
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,i;
f>>n;
for(i=0;i<n;i++)
f>>a[i];
f.close();
sortrap(0,n-1);
for(i=0;i<n;i++)
g<<a[i]<<' ';
g<<'\n';
g.close();
return 0;
}