Pagini recente » Cod sursa (job #3030845) | Cod sursa (job #1805151) | Cod sursa (job #1572139) | Cod sursa (job #2279090) | Cod sursa (job #2277678)
#include <fstream>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int n, i, copil, parinte;
int v[500005];
int main()
{
fin >> n;
for (i=1; i<=n; i++){
fin >> v[i];
}
for (i=2; i<=n; i++){
copil = i;
parinte = copil/2;
while (parinte >= 1 && v[parinte] < v[copil]){
swap (v[parinte], v[copil]);
copil = parinte;
parinte = copil/2;
}
}
for (i=n; i>=2; i--){
swap (v[1], v[i]);
parinte = 1;
copil = 2;
while (copil <= i - 1){
if (copil + 1 <= i - 1 && v[copil+1] > v[copil]){
copil++;
}
if (v[parinte] < v[copil]){
swap (v[parinte], v[copil]);
}
else{
break;
}
parinte = copil;
copil = parinte*2;
}
}
for (i=1; i<=n; i++){
fout << v[i] << " ";
}
return 0;
}
//heap sort