Pagini recente » Cod sursa (job #1160936) | Cod sursa (job #2399751) | Cod sursa (job #1835318) | Cod sursa (job #3196695) | Cod sursa (job #2483724)
#include <fstream>
using namespace std;
int n, i, v[500002], c, p;
int main ()
{
ifstream fin ("algsort.in");
ofstream fout("algsort.out");
fin>>n;
for (i=1; i<=n; i++)
fin>>v[i];
for (i=2; i<=n; i++)
{
c = i;
p=i/2;
while (p >= 1 && v[c] > v[p])
{
swap(v[c], v[p]);
c = p;
p/=2;
}
}
for (i=n; i>=2; i--)
{
swap(v[1], v[i]);
p = 1;
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]);
p = c;
c = 2*c;
}
else
break;
}
}
for (i=1; i<=n; i++)
fout<<v[i]<<" ";
return 0;
}