Example #1
0
        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)를 통해 볼 수 있게 만들어놓아서 큐의 모양새를 갖춘 것이 우선순위큐이다.
            //우선순위큐의 구현? 그런 거 귀찮아영.
        }
Example #2
0
        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();
            }
        }