public void MinHeapSingleton() { int value = 99; MinHeap minHeap = HeapFactory.CreateMinHeap(new int[] { value }); Assert.AreEqual(minHeap.GetCount(), 1); Assert.AreEqual(minHeap.PeekMin(), value); }
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; } }
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(); } }
public void MinHeapPopEmpty() { MinHeap minHeap = HeapFactory.CreateMinHeap(null); minHeap.PopMin(); }
public void MinHeapCreateFromEmpty() { MinHeap minHeap = HeapFactory.CreateMinHeap(new int[0]); Assert.AreEqual(minHeap.GetCount(), 0); }
public void MinHeapCreateFromNull() { MinHeap minHeap = HeapFactory.CreateMinHeap(null); Assert.AreEqual(minHeap.GetCount(), 0); }