Pagini recente » Cod sursa (job #2703781) | Cod sursa (job #2300509) | Cod sursa (job #3031450) | Cod sursa (job #1024206) | Cod sursa (job #2498116)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n,v[500200],tata,copil;
int main(){
fin>>n;
for(int i=1;i<=n;i++){
fin>>v[i];
}
for(int i=2;i<=n;i++){
copil=i;
tata=copil/2;
while(tata>=1){
if(v[copil]>v[tata]){
swap(v[copil],v[tata]);
}
else{
break;
}
copil=tata;
tata=tata/2;
}
}
for(int i=n;i>=2;i--){
swap(v[1],v[i]);
tata=1;
copil=2;
while(copil<i){
if(copil+1<i && v[copil+1]>v[copil]){
copil++;
}
if(v[copil]>v[tata]){
swap(v[copil],v[tata]);
}
else{
break;
}
tata=copil;
copil=2*copil;
}
}
for(int i=1;i<=n;i++){
fout<<v[i]<<" ";
}
}