Pagini recente » Cod sursa (job #3171224) | Cod sursa (job #1974817) | Cod sursa (job #3245851) | Cod sursa (job #3269110) | Cod sursa (job #240559)
Cod sursa(job #240559)
#include<fstream>
#define NMAX 500010
using namespace std;
int v[NMAX],n,i;
void heapsort(int a[], int lo,int hi)
{
if(hi>lo){
int mid=(lo+(hi-lo)/2)-1;
while(mid+lo>=lo)
{
if((a[mid+lo]>a[2*mid+lo])&&(2*mid+lo<=hi))
{
a[mid+lo]+=a[2*mid+lo];
a[2*mid+lo]=a[mid+lo]-a[2*mid+lo];
a[mid+lo]=a[mid+lo]-a[2*mid+lo];
}
if((a[mid+lo]>a[2*mid+1+lo])&&(2*mid+1+lo<=hi))
{
a[mid+lo]+=a[2*mid+1+lo];
a[2*mid+1+lo]=a[mid+lo]-a[2*mid+1+lo];
a[mid+lo]=a[mid+lo]-a[2*mid+1+lo];
}
mid--;
}
heapsort(a,lo+1,hi);
}
}
int main()
{
ifstream f ("algsort.in");
ofstream g ("algsort.out");
f>>n;
for(i=1;i<=n;i++) f>>v[i];
heapsort(v,1,n);
for(i=1;i<=n;i++) g<<v[i]<<" ";
f.close();
g.close();
return 0;
}