static void heapSort(int[] arr, int n) {
for (int i = n / 2 - 1; i >= 0; i--)
for (int i = n-1; i>=0; i--) {
static void heapify(int[] arr, int n, int i) {
Console.WriteLine(String.Join(", ", arr));
if (left < n && arr[left] > arr[largest])
if (right < n && arr[right] > arr[largest])
heapify(arr, n, largest);
public static void Main() {
Console.WriteLine("Heap Sort");
Console.Write("Initial array is: ");
for (i = 0; i < n; i++) {
Console.Write(arr[i] + " ");
Console.Write("\nSorted Array is: ");
for (i = 0; i < n; i++) {
Console.Write(arr[i] + " ");