public void MaxPriorityQueueTest() { int[] xs = { 3, 2, 1, 6, 5, 9, 4 }; var queue = new MaxPriorityQueue <int>(xs.Length); for (int i = 0; i < xs.Length; i++) { queue.Insert(xs[i]); } Quick <int> .SimpleSort(xs); for (int i = xs.Length - 1; i > 0; i--) { int v = queue.DelMax(); Assert.Equal(v, xs[i]); } }
public void MaxPriorityQueueTest_InitWithKey() { int[] a = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; Shuffle.Do(a); MaxPriorityQueue <int> pq = new MaxPriorityQueue <int>(a); Assert.IsFalse(pq.IsEmpty()); Assert.AreEqual(10, pq.Size()); for (int i = 0; i < 10; i++) { int result = pq.Max(); Assert.AreEqual(10 - i - 1, result); result = pq.DelMax(); Assert.AreEqual(10 - i - 1, result); } Assert.IsTrue(pq.IsEmpty()); Assert.AreEqual(0, pq.Size()); }
public void MaxPriorityQueueTest_Comparer() { Point[] points = new Point[10]; for (int i = 0; i < 10; i++) { points[i] = new Point(i, 10 - i); } Shuffle.Do(points); MaxPriorityQueue <Point> pq = new MaxPriorityQueue <Point>(Point.X_ORDER); foreach (var value in points) { pq.Insert(value); } Assert.IsFalse(pq.IsEmpty()); Assert.AreEqual(10, pq.Size()); Point[] expectPoints = new Point[10]; for (int i = 0; i < 10; i++) { expectPoints[i] = new Point(i, 10 - i); } Shuffle.Do(expectPoints); HeapSort.Sort(expectPoints, Point.X_ORDER, SortOrder.DESC); for (int i = 0; i < 10; i++) { var result = pq.Max(); Assert.AreEqual(expectPoints[i].X, result.X); Assert.AreEqual(expectPoints[i].Y, result.Y); result = pq.DelMax(); Assert.AreEqual(expectPoints[i].X, result.X); Assert.AreEqual(expectPoints[i].Y, result.Y); } Assert.IsTrue(pq.IsEmpty()); Assert.AreEqual(0, pq.Size()); }
public void MaxPQ_Basic() { var pq = new MaxPriorityQueue<int>(); pq.Insert(2, null); pq.Insert(6, null); pq.Insert(1, null); Assert.AreEqual(6, (int)(pq.DelMax().Item1)); pq.Insert(9, null); pq.Insert(7, null); pq.Insert(1, null); Assert.AreEqual(9, (int)(pq.DelMax().Item1)); pq.Insert(2, null); pq.Insert(6, null); pq.Insert(1, null); Assert.AreEqual(7, (int)(pq.DelMax().Item1)); Assert.AreEqual(6, (int)(pq.Max().Item1)); Assert.AreEqual(6, (int)(pq.DelMax().Item1)); Assert.AreEqual(2, (int)(pq.DelMax().Item1)); Assert.AreEqual(2, (int)(pq.DelMax().Item1)); }