Pagini recente » Borderou de evaluare (job #1529493) | Cod sursa (job #1769764) | Cod sursa (job #744894) | Cod sursa (job #2923830) | Cod sursa (job #1044367)
//
// main.cpp
// heap-sort
//
// Created by Catalina Brinza on 11/26/13.
// Copyright (c) 2013 Catalina Brinza. All rights reserved.
//
#include <fstream>
#include <vector>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int main()
{int n,i,x,j,aux;
vector<int> a;
a.push_back(0);
f>>n>>x; a.push_back(x);
for (i=2;i<=n;++i)
{
f>>x;
a.push_back(x);
int in=i;
while (a[in]<a[in/2])
{
aux=a[in];
a[in]=a[in/2];
a[in/2]=aux;
in=in/2;
}
}
int m=n;
for (i=1;i<=m;++i)
{
g<<a[1]<<' ';
a[1]=a[n];
n--;
a.pop_back();
j=1;
if (j*2+1<=n)
while (j*2+1<=n)
{
if (a[j]>a[j*2] && a[j*2]<a[j*2+1])
{
aux=a[j];
a[j]=a[j*2];
a[j*2]=aux;
j=j*2;
}
else if (a[j]>a[j*2+1] && a[j*2+1]<=a[j*2])
{
aux=a[j];
a[j]=a[j*2+1];
a[j*2+1]=aux;
j=j*2+1;
}
else break;
if (j==n) break;
}
else if (j*2==n && a[j]>a[j*2])
{
aux=a[j];
a[j]=a[j*2];
a[j*2]=aux;
}
}
return 0;
}