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); } }
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); } } }