Pagini recente » Istoria paginii utilizator/kcristian | Istoria paginii utilizator/ralgal | Profil Rotaru_Jeni_323CB | Atasamentele paginii Clasament leitentw | Cod sursa (job #1383531)
#include<fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500005],i,n,c,p,aux;
void inter(int a,int b){
int aux;
aux=v[a];
v[a]=v[b];
v[b]=aux;
return ;
}
void insert(int n){
//v[++n]=x;
c=n;
p=n/2;
while(p!=0){
if(v[c]>v[p]){
inter(c,p);
c=p;
p/=2;
}else
break;
}
}
void sterg(int n){
p=1;
c=2;
while(c<=n){
if(c+1<=n && v[c+1]>v[c]){
c++;
}
if(v[p]<v[c]){
inter(c,p);
p=c;
c=2*p;
}else
break;
}
}
int main(){
fin>>n;
for(i=1;i<=n;i++){
fin>>v[i];
}
for(i=2;i<=n;i++){
insert(i);
}
for(i=n;i>=2;i--){
inter(1,i);
sterg(i-1);
}
for(i=1;i<=n;i++){
fout<<v[i]<<" ";
}
return 0;
}