Pagini recente » Cod sursa (job #3257052) | Cod sursa (job #158797) | Cod sursa (job #299264) | Cod sursa (job #2689721) | Cod sursa (job #2913591)
#include <iostream>
#include <fstream>
#define MAX 500002
using namespace std;
int n,v[MAX];
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int main()
{
fin >> n;
for(int i = 1; i <= n; i++){
fin >> v[i];
}
for(int i = 1; i <= n; i++){
int j = i;
while(j > 1 && v[j] > v[j/2]){
swap(v[j], v[j/2]);
j /= 2;
}
}
for(int i = n; i >= 2; i--){
swap(v[1], v[i]);
int p = 1;
int c = 2;
while(c <= i-1){
if(c+1 <= i-1 && v[c+1] > v[c]){
c++;
}
if(v[p] < v[c]){
swap(v[p], v[c]);
}else{
break;
}
p = c;
c *= 2;
}
}
for(int i = 1; i <= n; i++){
fout << v[i] << " ";
}
return 0;
}