public virtual BinaryHeapPriorityQueue <E> DeepCopy(MapFactory <E, BinaryHeapPriorityQueue.Entry <E> > mapFactory)
        {
            BinaryHeapPriorityQueue <E> queue = new BinaryHeapPriorityQueue <E>(mapFactory);

            foreach (BinaryHeapPriorityQueue.Entry <E> entry in keyToEntry.Values)
            {
                queue.RelaxPriority(entry.key, entry.priority);
            }
            return(queue);
        }
        public virtual IList <E> ToSortedList()
        {
            IList <E> sortedList = new List <E>(Count);
            BinaryHeapPriorityQueue <E> queue = this.DeepCopy();

            while (!queue.IsEmpty())
            {
                sortedList.Add(queue.RemoveFirst());
            }
            return(sortedList);
        }
Exemple #3
0
 protected internal static void RunRelaxingTests(BinaryHeapPriorityQueue <string> queue)
 {
     queue.Add("a", 1.0);
     NUnit.Framework.Assert.AreEqual("Added a:1", "[a=1.0]", queue.ToString());
     queue.Add("b", 2.0);
     NUnit.Framework.Assert.AreEqual("Added b:2", "[b=2.0, a=1.0]", queue.ToString());
     queue.Add("c", 1.5);
     NUnit.Framework.Assert.AreEqual("Added c:1.5", "[b=2.0, c=1.5, a=1.0]", queue.ToString());
     queue.RelaxPriority("a", 3.0);
     NUnit.Framework.Assert.AreEqual("Increased a to 3", "[a=3.0, b=2.0, c=1.5]", queue.ToString());
     queue.DecreasePriority("b", 0.0);
     NUnit.Framework.Assert.AreEqual("Decreased b to 0", "[a=3.0, c=1.5, b=0.0]", queue.ToString());
     NUnit.Framework.Assert.AreEqual("removeFirst()", "a", queue.RemoveFirst());
     NUnit.Framework.Assert.AreEqual("queue", "[c=1.5, b=0.0]", queue.ToString());
     NUnit.Framework.Assert.AreEqual("removeFirst()", "c", queue.RemoveFirst());
     NUnit.Framework.Assert.AreEqual("queue", "[b=0.0]", queue.ToString());
     NUnit.Framework.Assert.AreEqual("removeFirst()", "b", queue.RemoveFirst());
     NUnit.Framework.Assert.IsTrue(queue.IsEmpty());
 }