public static void Main()
Console.WriteLine("Hello World");
int[] array = {7, 10, 4, 3, 20, 15};
int heapSize = array.Length;
for(int i = 0; i < k - 1; i++, heapSize--)
ExtractMin(array, heapSize);
Console.WriteLine(GetMin(array));
static int GetMin(int[] array)
static int ExtractMin(int[] heap, int heapSize)
heap[0] = heap[heapSize-1];
MinHeapify(heap, 0, heapSize);
static void MinHeap(int[] ar)
int i = (ar.Length - 1)/2;
MinHeapify(ar, i, ar.Length);
static void MinHeapify(int[] array, int i, int heapSize)
if (l < heapSize && array[l] < array[smallest])
if (r < heapSize && array[r] < array[smallest])
Swap(i, smallest, array);
MinHeapify(array, i, heapSize);
static void MaxHeapify(int[] heap, int k, int ix)
Console.WriteLine("{0} {1}", l, r);
if (l < heap.Length && heap[l] > heap[ix])
if (r < heap.Length && heap[r] > heap[largest])
Console.WriteLine("largest: {0}", largest);
MaxHeapify(heap, k, largest);
static void Swap(int i, int j, int[] arr)
if (i==j || arr[i] == arr[j]) return;