Example 1: heap sort
function heapify(list, size, index) {
let largest = index;
let left = index * 2 + 1;
let right = left + 1;
if (left < size && list[left] > list[largest]) {
largest = left;
}
if (right < size && list[right] > list[largest]) {
largest = right;
}
if (largest !== index) {
[list[index], list[largest]] = [list[largest], list[index]];
heapify(list, size, largest);
}
return list;
}
function heapsort(list) {
const size = list.length;
let index = ~~(size / 2 - 1);
let last = size - 1;
while (index >= 0) {
heapify(list, size, --index);
}
while (last >= 0) {
[list[0], list[last]] = [list[last], list[0]];
heapify(list, --last, 0);
}
return list;
}
heapsort([4, 7, 2, 6, 4, 1, 8, 3]);
Example 2: heapsort
Implementation of heap sort in C++:
#include <bits/stdc++.h>
using namespace std;
void heapify(int A[], int n, int i)
{
int largest = i;
int left_child = 2 * i + 1;
int right_child = 2 * i + 2;
if (left_child < n && A[left_child] > A[largest])
largest = left_child;
if (right_child < n && A[right_child] > A[largest])
largest = right_child;
if (largest != i) {
swap(A[i], A[largest]);
heapify(A, n, largest);
}
}
void heap_sort(int A[], int n)
{
for (int i = n / 2 - 1; i >= 0; i--)
heapify(A, n, i);
for (int i = n - 1; i >= 0; i--) {
swap(A[0], A[i]);
heapify(A, i, 0);
}
}
void printArray(int A[], int n)
{
for (int i = 0; i < n; ++i)
cout << A[i] << " ";
cout << "\n";
}
int main()
{
int A[] = { 22, 19, 3, 25, 26, 7 };
int n = sizeof(A) / sizeof(A[0]);
heap_sort(A, n);
cout << "Sorted array is \n";
printArray(A, n);
}
Example 3: heap sort name meaning
A sorting algorithm that works by first organizing the data to be sorted into a special type of binary tree called a heap. The heap itself has, by definition, the largest value at the top of the tree.