Pagini recente » Cod sursa (job #2358872) | Cod sursa (job #2578178) | Cod sursa (job #1933625) | Cod sursa (job #2911325) | Cod sursa (job #2604440)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream f2("algsort.out");
void heapify(int arr[], int n, int i){
int largest = i;
int st = i * 2 + 1;
int dr = i * 2 + 2;
if(st < n && arr[st] > arr[largest]){
largest = st;
}
if(dr < n && arr[dr] > arr[largest]){
largest = dr;
}
if(largest != i){
swap(arr[i], arr[largest]);
heapify(arr, n, largest);
}
}
void HeapSort(int arr[], int n){
int indexStr = n / 2 - 1;
for(int i = indexStr; i >= 0; i--){
heapify(arr, n, i);
}
for(int i = n - 1; i > 0; i--){
swap(arr[0],arr[i]);
heapify(arr, i, 0);
}
}
void Print(int arr[], int n){
for(int i = 0; i < n; i++){
f2 << arr[i] << " ";
}
}
int main()
{
int n, arr[500001];
f >> n;
for(int i = 0; i < n; i++){
f >> arr[i];
}
HeapSort(arr, n);
Print(arr, n);
return 0;
}