Pagini recente » Cod sursa (job #2150229) | Cod sursa (job #2292845) | Cod sursa (job #2913582) | Cod sursa (job #920628) | Cod sursa (job #1052925)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int nr, heap[500001], j;
void urca(int n, int poz)
{
while(poz>1 && heap[poz]<heap[poz/2])
{
swap(heap[poz], heap[poz/2]);
poz=poz/2;
}
}
void insertt(int &n, int val)
{
n++;
heap[n]=val;
urca(n, n);
}
void coboara(int n, int poz)
{
int poz1;
while(poz*2+1<=n && (heap[poz]>heap[poz*2] || heap[poz]>heap[poz*2+1]))
{
poz1=poz*2;
if(heap[poz*2+1]<heap[poz*2])
poz1=poz*2+1;
swap(heap[poz], heap[poz1]);
poz=poz1;
}
if(poz*2==n && heap[poz]>heap[poz*2])
swap(heap[poz], heap[poz*2]);
}
void delete_min (int &n)
{
g<<heap[1]<<" ";
heap[1]=heap[n--];
coboara(n, 1);
}
int main()
{
int i, x;
j=0;
f>>nr;
for(i=1;i<=nr;i++)
{
f>>x;
insertt(j,x);
}
for(i=1;i<=nr;i++)
delete_min(j);
}