Heap-Sort
#include <iostream>
using namespace std;
void sink(char *arr, int k, int n)
{
while (k * 2 <= n)
{
int j = 2 * k;
if (j < n && arr[j - 1] < arr[j])
j++;
if (!(arr[k - 1] < arr[j - 1]))
break;
swap(arr[k - 1], arr[j - 1]);
k = j;
}
}
void heapSort(char *arr, int size)
{
int N = size;
// Heap-Ordered
for (int k = N / 2; k >= 1; k--)
sink(arr, k, N);
// Heap-Sort
while (N > 1)
{
swap(arr[0], arr[--N]);
sink(arr, 1, N);
}
}
int main()
{
char arr[] = {'S', 'O', 'R', 'T', 'E', 'X', 'A', 'M', 'P', 'L', 'E'};
int n = sizeof(arr) / sizeof(arr[0]);
heapSort(arr, n);
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
}
Last updated
