Exemplo n.º 1
0
        private static string DumpHeap <T>(LazyParingHeap <T> .Heap node, bool showSusp) where T : IComparable <T>
        {
            var result = new StringBuilder();

            result.Append("[");
            result.Append(node.Root);
            if (!LazyParingHeap <T> .IsEmpty(node.List))
            {
                result.Append(", ");
                result.Append(DumpHeap(node.List, showSusp));
            }
            if (showSusp || node.LazyList.IsValueCreated)
            {
                if (!LazyParingHeap <T> .IsEmpty(node.LazyList.Value))
                {
                    result.Append("; ");
                    result.Append(DumpHeap(node.LazyList.Value, showSusp));
                }
            }
            else
            {
                result.Append("; susp");
            }
            result.Append("]");
            return(result.ToString());
        }
Exemplo n.º 2
0
        public void DeleteLotsOfMinsTest()
        {
            const int size   = 1000;
            var       random = new Random(3456);
            var       heap   = LazyParingHeap <int> .Empty;

            for (var i = 0; i < size; i++)
            {
                heap = LazyParingHeap <int> .Insert(random.Next(size), heap);
            }
            var last  = 0;
            var count = 0;

            while (!LazyParingHeap <int> .IsEmpty(heap))
            {
                var next = LazyParingHeap <int> .FindMin(heap);

                heap = LazyParingHeap <int> .DeleteMin(heap);

                Assert.IsTrue(last <= next);
                last = next;
                count++;
            }
            Assert.AreEqual(size, count);
        }
Exemplo n.º 3
0
        public void EmptyTest()
        {
            var empty = LazyParingHeap <int> .Empty;

            Assert.IsTrue(LazyParingHeap <int> .IsEmpty(empty));

            var heap = LazyParingHeap <int> .Insert(3, empty);

            Assert.IsFalse(LazyParingHeap <int> .IsEmpty(heap));
        }