Pagini recente » Cod sursa (job #556568) | Cod sursa (job #491397) | Cod sursa (job #256928) | Cod sursa (job #571743) | Cod sursa (job #2277677)
#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=1; i<=n; 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