public void Test()
        {
            var pq = new IndexMinPQ <int>(10);

            pq.Enqueue(1, 20);
            pq.Enqueue(2, 15);

            Assert.Equal(15, pq.MinKey());

            pq.Enqueue(1, 10);

            Assert.Equal(10, pq.MinKey());

            pq.Enqueue(3, 11);

            Assert.Equal(1, pq.DelMin());

            Assert.Equal(11, pq.MinKey());

            Assert.Equal(2, pq.Count);

            Assert.False(pq.IsEmpty);

            pq.Enqueue(2, 10);

            Assert.Equal(10, pq.MinKey());
            Assert.Equal(2, pq.DelMin());

            foreach (var v in pq)
            {
                console.WriteLine("key: {0}", v);
            }
        }
    public void IndexMinPQ_Enqueue()
    {
        var q = new IndexMinPQ<int>(items.Length);
        var minItem = int.MaxValue;

        for (int i = 0; i < items.Length; i++)
        {
            // After adding each item, the min item should be on top
            q.Insert(i, items[i]);
            minItem = Math.Min(items[i], minItem);

            Assert.AreEqual(q.MinKey(), minItem);
        }
    }
Esempio n. 3
0
        public EagerPrim(WeightedGraph G)
        {
            int V = G.V();

            pq = new IndexMinPQ <Edge>(V);

            marked = new bool[V];

            Visit(G, 0);

            path = new List <Edge>();

            while (!pq.IsEmpty)
            {
                var e = pq.MinKey();
                var v = pq.DelMin();
                path.Add(e);
                if (!marked[v])
                {
                    Visit(G, v);
                }
            }
        }