Esempio n. 1
0
        private void TestInsert(IBinaryHeap bh, HeapType ht)
        {
            IComparable[] a = Enumerable.Range(0, 50).OrderBy(r => rnd.Next()).Select(x => x as IComparable).ToArray();

            IComparable expectedRoot = a[0];

            bh.Insert(a[0]);
            Assert.AreEqual(0, bh.Peek().CompareTo(a[0]));

            for (int i = 1; i < a.Length; i++)
            {
                if (ht == HeapType.MAX_HEAP && a[i].CompareTo(expectedRoot) > 0)
                {
                    expectedRoot = a[i];
                }
                if (ht == HeapType.MIN_HEAP && a[i].CompareTo(expectedRoot) < 0)
                {
                    expectedRoot = a[i];
                }

                bh.Insert(a[i]);
                Assert.AreEqual(expectedRoot, bh.Peek());
            }
        }