public static void HeapTest1() { Random rnd = new Random(); SimpleHeap <int> sh = new SimpleHeap <int>((int a, int b) => { return(-a.CompareTo(b)); }); for (int i = 1; i <= 10; i++) { int r = rnd.Next(20); Console.WriteLine("{0} insertion : {1}", i, r); sh.HInsert(r); } Console.WriteLine(); for (int i = 1; i <= 10; i++) { Console.WriteLine("sh[{0}] : {1}", i, sh[i]); } Console.WriteLine("Root Node is Deleted : {0}", sh.HDelete()); for (int i = 1; i <= 9; i++) { Console.WriteLine("sh[{0}] : {1}", i, sh[i]); } for (int i = 2; i <= 10; i++) { Console.WriteLine("{0}th deletion : {1}", i, sh.HDelete()); } //힙에서 첫번째 인덱스만 deque함수(equivalent to HDelete)를 통해 볼 수 있게 만들어놓아서 큐의 모양새를 갖춘 것이 우선순위큐이다. //우선순위큐의 구현? 그런 거 귀찮아영. }
static public void HeapSort(ref T[] arr, int len) { SimpleHeap <T> heap = new SimpleHeap <T>(); for (int i = 0; i < len; i++) { heap.HInsert(arr[i]); } for (int i = 0; i < len; i++) { arr[i] = heap.HDelete(); } }