Pagini recente » Cod sursa (job #2515202) | Cod sursa (job #2923655) | Cod sursa (job #1056408) | Cod sursa (job #1331226) | Cod sursa (job #1182437)
#include <fstream>
using namespace std;
const int nmax=600000;
int a[nmax],n;
void shift(int k,int n)
{ int s;
do
{
s=0;
if (2*k<=n) s=2*k;
if (2*k+1<=n && a[2*k+1]<a[s]) s=2*k+1;
if (a[s]>=a[k]) s=0;
if (s)
{
swap(a[k],a[s]);
k=s;
}
} while (s);
}
int main()
{
ifstream cin("algsort.in");
cin>>n;
for (int i=1;i<=n;i++) cin>>a[i]; //citirea
for (int i=n/2;i>0;i--) shift(i,n); // crearea heapului
for (int i=n;i>1;i--) // heapsort
{
swap(a[1],a[i]);
shift(1,i-1);
}
ofstream cout("algsort.out");
for (int i=n;i>=1;i--) cout<<a[i]<<" " ;
}