Pagini recente » Cod sursa (job #2069017) | Cod sursa (job #2766350) | Cod sursa (job #2756602) | Cod sursa (job #2612258) | Cod sursa (job #386248)
Cod sursa(job #386248)
using namespace std;
#include<fstream>
int *h;
void promoveaza(int);
void cerne(int,int);
int main()
{
int aux,n,i,j;
ifstream fin("algsort.in");
fin>>n;
h=new int[n+1];
for(i=1;i<=n;++i)
{
fin>>h[i];
promoveaza(i);
}
for(i=n;i>1;--i)
{
aux=h[1];
h[1]=h[i];
h[i]=aux;
cerne(1,i-1);
}
ofstream fout("algsort.out");
for(i=n;i;--i)
fout<<h[i]<<' ';
return 0;
}
void promoveaza(int k)
{
int eh=0,aux;
while(k/2 && eh==0)
{
if(h[k/2]<=h[k])
eh=1;
else
{
aux=h[k];
h[k]=h[k/2];
h[k/2]=aux;
k/=2;
}
}
}
void cerne(int k,int n)
{
int eh=0,i,aux;
while(2*k<=n && eh==0)
{
i=2*k;
if(i+1<=n)
if(h[i+1]<h[i])
++i;
if(h[k]<=h[i])
eh=1;
else
{
aux=h[i];
h[i]=h[k];
h[k]=aux;
k=i;
}
}
}