Exemple #1
0
        public void MinHeapSingleton()
        {
            int     value   = 99;
            MinHeap minHeap = HeapFactory.CreateMinHeap(new int[] { value });

            Assert.AreEqual(minHeap.GetCount(), 1);
            Assert.AreEqual(minHeap.PeekMin(), value);
        }
Exemple #2
0
        public void MinHeapLargeRandom()
        {
            KevinMinHeap minHeap = null;

            int[]      inputArray    = null;
            int[]      expectedArray = null;
            List <int> poppedValues  = new List <int>();

            try
            {
                int arrayLength = 1000;
                inputArray = new int[arrayLength];

                Random randomGenerator = new Random();
                for (int i = 0; i < arrayLength; i++)
                {
                    inputArray[i] = randomGenerator.Next();
                }

                expectedArray = inputArray.Clone() as int[];
                // default sort puts min at the front of the sorted array
                Array.Sort(expectedArray);

                minHeap = (KevinMinHeap)HeapFactory.CreateMinHeap(inputArray);
                int expectedCount = inputArray.Length;
                Assert.AreEqual(minHeap.GetCount(), expectedCount);

                Console.WriteLine("binHeap:");
                Console.WriteLine(String.Join(" ", minHeap.ToString()));


                for (int i = 0; i < inputArray.Length; i++)
                {
                    int actual = minHeap.PopMin();
                    poppedValues.Add(actual);

                    int expected = expectedArray[i];
                    Assert.AreEqual(actual, expected);
                    expectedCount--;
                    Assert.AreEqual(minHeap.GetCount(), expectedCount);
                }
            }
            catch (Exception)
            {
                Console.WriteLine("inputArray:");
                Console.WriteLine(String.Join(" ", inputArray));
                Console.WriteLine("expectedArray:");
                Console.WriteLine(String.Join(" ", expectedArray));
                Console.WriteLine("popped values:");
                Console.WriteLine(string.Join(" ", poppedValues));
                Console.WriteLine("minHeap:");
                Console.WriteLine(minHeap.ToString());

                throw;
            }
        }
Exemple #3
0
        public static void Sort(int[] a)
        {
            if (a == null || a.Length <= 1)
            {
                // null, empty, and singleton arrays are already sorted
                return;
            }

            MinHeap h = HeapFactory.CreateMinHeap(a);

            for (int i = 0; i < a.Length; i++)
            {
                a[i] = h.PopMin();
            }
        }
Exemple #4
0
        public void MinHeapPopEmpty()
        {
            MinHeap minHeap = HeapFactory.CreateMinHeap(null);

            minHeap.PopMin();
        }
Exemple #5
0
        public void MinHeapCreateFromEmpty()
        {
            MinHeap minHeap = HeapFactory.CreateMinHeap(new int[0]);

            Assert.AreEqual(minHeap.GetCount(), 0);
        }
Exemple #6
0
        public void MinHeapCreateFromNull()
        {
            MinHeap minHeap = HeapFactory.CreateMinHeap(null);

            Assert.AreEqual(minHeap.GetCount(), 0);
        }