Pagini recente » Cod sursa (job #710412) | Cod sursa (job #2241107) | Cod sursa (job #2450708) | Cod sursa (job #708646) | Cod sursa (job #1813660)
#include <fstream>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout("algsort.out");
int i,n,v[500010];
void swap(int &a, int &b)
{
int c;
c=a;
a=b;
b=c;
}
void add(int i)
{
while(v[i]>v[i/2]&&i/2>0)
{
swap(v[i], v[i/2]);
i/=2;
}
}
void verificare(int n)
{
int c, p;
p=1;c=2;
while(c<=n)
{
if(v[c+1]>v[c]&&c+1<=n)
c++;
if(v[p]<v[c])
swap(v[p], v[c]);
else
break;
p=c;
c=c*2;
}
}
int main ()
{
fin>>n;
fin>>v[1];
for(i=2;i<=n;i++)
{
fin>>v[i];
add(i);
}
for(i=n;i>=1;i--)
{
swap(v[i], v[1]);
verificare(i-1);
}
for(i=1;i<=n;i++)
fout<<v[i]<<" ";
fin.close();
fout.close();
return 0;
}