Pagini recente » Cod sursa (job #2985104) | Cod sursa (job #1988884)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int k=1e6+1;
int numbers[k], n;
void heap(int position)
{
int aux;
if(position==1)
return;
if(numbers[position]>numbers[position/2]){
aux=numbers[position];
numbers[position]=numbers[position/2];
numbers[position/2]=aux;
heap(position/2);
}
}
void heapkappa(int position, int contor)
{
int l=position*2;
int r=position*2+1;
int boss=position;
int aux;
if(l<=contor && numbers[l]>numbers[boss])
boss=l;
if(r<=contor && numbers[r]>numbers[boss])
boss=r;
if(boss!=position){
aux=numbers[position];
numbers[position]=numbers[boss];
numbers[boss]=aux;
heapkappa(boss,contor);
}
}
void heapsort()
{
int aux;
for(int i=n; i>=1; i--){
aux=numbers[i];
numbers[i]=numbers[1];
numbers[1]=aux;
heapkappa(1,i-1);
}
}
void print()
{
for(int i=1; i<=n; i++)
fout<<numbers[i]<<" ";
}
int main()
{
fin>>n;
for(int i=1; i<=n; i++){
fin>>numbers[i];
heap(i);
}
heapsort();
print();
}