Cod sursa(job #1816420)

Utilizator aaether14Dinescu Stefan Cristian aaether14 Data 26 noiembrie 2016 14:17:03
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <algorithm>


int v[1<<19];
int n;


void heap_insert(int to_insert)
{

	while(v[to_insert] > v[to_insert/2])
	{
		std::swap(v[to_insert],v[to_insert/2]);
		to_insert/=2;
	}

}



void heap_sort(int to_sort)
{
	

	std::swap(v[0], v[n-to_sort-1]);	
	int child_index = 1;
	while (child_index < n-to_sort-1)
	{
		if (child_index < n-to_sort-2 && v[child_index+1] > v[child_index])
			++child_index;
		std::swap(v[child_index/2], v[child_index]);
		child_index*=2;
	}



}


int main()
{

	std::ifstream fin("algsort.in");
	std::ofstream fout("algsort.out");


	fin>>n;
	for (int i = 0; i < n; ++i)
		fin>>v[i];
	for (int i = 0; i < n; ++i)
		heap_insert(i);
	for (int i = 0; i < n; ++i)
		heap_sort(i);
	for (int i = 0; i < n; ++i)
		fout << v[i] << " ";

	

	fout.close();
	fin.close();

}