public void Test_Empty_OnCreation() { MaxPQ <Int32> pq = new MaxPQ <Int32>(1); Assert.True(pq.IsEmpty); Assert.Equal(0, pq.Count); }
static void Main(string[] args) { int n = 200000; int repeatTimes = 5; int doubleTimes = 4; for (int i = 0; i < doubleTimes; i++) { Console.WriteLine("n=" + n); // 升序数组 long totalTime = 0; Console.Write("Ascending:\t"); for (int j = 0; j < repeatTimes; j++) { MaxPQ <int> pq = new MaxPQ <int>(n); int[] data = GetAscending(n); long time = Test(pq, data); Console.Write(time + "\t"); totalTime += time; } Console.WriteLine("Average:" + totalTime / repeatTimes); // 降序数组 totalTime = 0; Console.Write("Descending:\t"); for (int j = 0; j < repeatTimes; j++) { MaxPQ <int> pq = new MaxPQ <int>(n); int[] data = GetDescending(n); long time = Test(pq, data); Console.Write(time + "\t"); totalTime += time; } Console.WriteLine("Average:" + totalTime / repeatTimes); // 全部元素相同 totalTime = 0; Console.Write("All Same:\t"); for (int j = 0; j < repeatTimes; j++) { MaxPQ <int> pq = new MaxPQ <int>(n); int[] data = GetSame(n, 17763); long time = Test(pq, data); Console.Write(time + "\t"); totalTime += time; } Console.WriteLine("Average:" + totalTime / repeatTimes); // 只有两个值 totalTime = 0; Console.Write("Binary Dist.:\t"); for (int j = 0; j < repeatTimes; j++) { MaxPQ <int> pq = new MaxPQ <int>(n); int[] data = GetBinary(n, 15254, 17763); long time = Test(pq, data); Console.Write(time + "\t"); totalTime += time; } Console.WriteLine("Average:" + totalTime / repeatTimes); n *= 2; } }
public MinPQWithSize(int max, IComparer <T> comparer) { //m_pq = new T[max + 2]; m_max = max; m_maxPQ = new MaxPQ <T>(max, comparer); m_comparer = comparer; }
static T ExtractMax <T>(MaxPQ <T> pq) where T : IComparable <T> { T x = pq.Top; pq.Pop(); return(x); }
public static void Main(string[] arg) { string filename = "words3.txt"; string[] a = Util.readWords(filename); MaxPQ<string> pqMax = new MaxPQ<string>(); foreach (var item in a) { pqMax.insert(item); } // se vor afisa cuvintele in ordine descrescatoare Console.WriteLine("MaxPQ"); while (!pqMax.isEmpty()) { Console.WriteLine(pqMax.delMax()); } MinPQ<string> pqMin = new MinPQ<string>(); foreach (var item in a) { pqMin.insert(item); } // se vor afisa cuvintele in ordine crescatoare Console.WriteLine("\nMinPQ"); while (!pqMin.isEmpty()) { Console.WriteLine(pqMin.delMin()); } }
private void exch(T i, T j) { MaxPQ <T> temp = dict[i]; dict[i] = dict[j]; dict[j] = temp; }
public void IsEmpty_PQWithOneElement_ReturnsFalse() { MaxPQ <int> pq = new MaxPQ <int>(100); pq.Insert(1); Assert.IsFalse(pq.IsEmpty()); }
public void Hamlet_MaxPQ() { // arrange var pq = new MaxPQ <string>(); // act / assert ArrayPQHamlet(pq, hamlet_tops, hamlet_leftovers); }
public void MaxPQTiny() { MaxPQ<string> pq = new MaxPQ<string>(); string streamName = "Algs4-Data\\TinyPQ.txt"; string[] expectedResults = { "Q", "X", "P" }; int expectedRemainder = 6; CommonPriorityQueueUnitTests.StringPQTest(streamName, pq, expectedResults, expectedRemainder); }
public void IsEmpty_AfterRemovingLastElement_ReturnsTrue() { MaxPQ <int> pq = new MaxPQ <int>(100); pq.Insert(1); pq.DelMax(); Assert.IsTrue(pq.IsEmpty()); }
public void Test_Empty_WhenCleaning() { MaxPQ <Int32> pq = new MaxPQ <Int32>(1); pq.Add(2); pq.DeleteMax(); Assert.True(pq.IsEmpty); Assert.Equal(0, pq.Count); }
public void DelMax_PQWithOneElement_ReturnsThatElement() { MaxPQ <int> pq = new MaxPQ <int>(100); pq.Insert(1); int retVal = pq.DelMax(); Assert.AreEqual(1, retVal); }
public void Test_NotEmpty_WhenAdding() { MaxPQ <Int32> pq = new MaxPQ <Int32>(2); pq.Add(18); pq.Add(2); Assert.False(pq.IsEmpty); Assert.Equal(2, pq.Count); }
public void Test_Add_Max() { MaxPQ <Int32> pq = new MaxPQ <Int32>(10); for (int i = 1; i < 11; i++) { pq.Add(i); } Assert.Equal(10, pq.Max()); }
static void Main(string[] args) { // P // R P // R P I // R P O I // P O I // R P O I // P O I // O I // O I I // I I // T I I // I I // Y I I // I I // I // // Q // U Q // U Q E // Q E // E // // U // // E // MaxPQ <char> pq = new MaxPQ <char>(); string input = "P R I O * R * * I * T * Y * * * Q U E * * * U * E"; foreach (char c in input) { if (c == ' ') { continue; } else if (c == '*') { pq.DelMax(); } else { pq.Insert(c); } foreach (char n in pq) { Console.Write(n + " "); } Console.WriteLine(); } }
public void DelMax_PQWith3Element_ReturnsGreater() { MaxPQ <int> pq = new MaxPQ <int>(100); pq.Insert(1); pq.Insert(3); pq.Insert(2); Assert.AreEqual(3, pq.DelMax()); Assert.AreEqual(2, pq.DelMax()); Assert.AreEqual(1, pq.DelMax()); }
static void Main(string[] args) { // 输入格式: buy 20.05 100 var buyer = new MaxPQ <Ticket>(); var seller = new MinPQ <Ticket>(); var n = int.Parse(Console.ReadLine()); for (var i = 0; i < n; i++) { var ticket = new Ticket(); var item = Console.ReadLine().Split(' '); ticket.Price = double.Parse(item[1]); ticket.Share = int.Parse(item[2]); if (item[0] == "buy") { buyer.Insert(ticket); } else { seller.Insert(ticket); } } while (!buyer.IsEmpty() && !seller.IsEmpty()) { if (buyer.Max().Price < seller.Min().Price) { break; } var buy = buyer.DelMax(); var sell = seller.DelMin(); Console.Write("sell $" + sell.Price + " * " + sell.Share); if (buy.Share > sell.Share) { Console.WriteLine(" -> " + sell.Share + " -> $" + buy.Price + " * " + buy.Share + " buy"); buy.Share -= sell.Share; buyer.Insert(buy); } else if (buy.Share < sell.Share) { sell.Share -= buy.Share; seller.Insert(sell); Console.WriteLine(" -> " + buy.Share + " -> $" + buy.Price + " * " + buy.Share + " buy"); } else { Console.WriteLine(" -> " + sell.Share + " -> $" + buy.Price + " * " + buy.Share + " buy"); } } }
public void TestMaxPQ() { int amounts = 10; MaxPQ pq = new MaxPQ(amounts); Random rand = new Random(); for (int i = 0; i < amounts; i++) pq.Insert(rand.Next(0, 1000).ToString()); Debug.WriteLine(Sort.Show(pq.PQs)); pq.DelMax(); Debug.WriteLine(Sort.Show(pq.PQs)); }
public void TestMaxPQ() { var arr = CreateRandomArray(10); Insertion<int>.Sort(arr); StdOut.WriteLine(arr); var pq = new MaxPQ<int>(); foreach (int i in arr) { pq.Insert(i); } while (!pq.IsEmpty) { StdOut.WriteLine("delete max: {0}", pq.DelMax()); } }
public void Test_Add_DeleteMax_Order() { MaxPQ <Int32> pq = new MaxPQ <Int32>(10); for (int i = 1; i < 11; i++) { pq.Add(i); } for (int i = 10; i > 0; i--) { Assert.Equal(pq.DeleteMax(), i); } }
public int CompareTo(MaxPQ <T> obj) //Required type arguments { int results = 0; if (this.pq == obj.pq) { results = this.N.CompareTo(obj.N); } else { this.pq.CompareTo(obj.pq); } return(results); }
public void Run() { Console.WriteLine("Choose file:"); // Prompt Console.WriteLine("1 - tinyPQ.txt"); // Prompt Console.WriteLine("or quit"); // Prompt var fileNumber = Console.ReadLine(); var fieName = string.Empty; switch (fileNumber) { case "1": fieName = "tinyPQ.txt"; break; case "quit": return; default: return; } var @in = new In(string.Format("Files\\Sorting\\{0}", fieName)); var words = @in.ReadAllStrings(); //var list = words.Select(word => new StringComparable(word)).ToList(); //var listComparable = list.Cast<IComparable>().ToList(); //var arrayComparable = list.Cast<IComparable>().ToArray(); var listStrings = words.ToList(); var pq = new MaxPQ <string>(new StringComparer()); //Fill Priority Queue foreach (var word in listStrings) { pq.Insert(word); } // print results foreach (var item in pq) { Console.WriteLine(item); } Console.ReadLine(); }
static long Test(MaxPQ <int> pq, int[] data) { Stopwatch sw = new Stopwatch(); sw.Start(); for (int i = 0; i < data.Length; i++) { pq.Insert(data[i]); } for (int i = 0; i < data.Length; i++) { pq.DelMax(); } sw.Stop(); return(sw.ElapsedMilliseconds); }
public void maxpq() { MaxPQ <string> pq = new MaxPQ <string>(); string item = "vonNeumann 2/12/1994 4732.35"; if (!item.Equals("-")) { pq.insert(item); } else if (!pq.IsEmpty()) { print(pq.delMax() + " "); } print("(" + pq.size() + " left on pq)"); }
static IEnumerable <int> MedianMaintenance(IEnumerable <int> xs) { MaxPQ <int> lowValues = PQ <int> .CreateMaxPQ(); MinPQ <int> highValues = PQ <int> .CreateMinPQ(); int y = 0; foreach (var x in xs) //lg(N!) + 4/3 lg (N!) == 7/3 lg (N!) { if (lowValues.Size > 0) //lg(N!) { if (x > lowValues.Top) { highValues.Push(x); //lg N } else { lowValues.Push(x); //lg N } } else { lowValues.Push(x); //lg N } //TODO: Not a simple analysis, depends on order of data in xs //Draft: Suppose 1/3 per branch and 2 lg N Push and Extract, the expected value would be 4/3 lg (N!) if (lowValues.Size > highValues.Size + 1) { highValues.Push(ExtractMax(lowValues)); //2 lg N (Push + Extract) } else if (highValues.Size > lowValues.Size) { lowValues.Push(ExtractMin(highValues)); //2 lg N (Push + Extract) } //else { } //0 y = lowValues.Top; yield return(y); //DEBUG //Console.WriteLine("Median of {0,4} = {1,4}", lowValues.Size + highValues.Size, y); } }
static long Test(MaxPQ <int> pq, int n) { // 生成数据 var initData = new int[n]; var appendData = new int[n / 2]; for (var i = 0; i < n; i++) { initData[i] = random.Next(); } for (var i = 0; i < n / 2; i++) { appendData[i] = random.Next(); } // 开始测试 var stopwatch = new Stopwatch(); stopwatch.Start(); // 插入 n 个元素 for (var i = 0; i < n; i++) { pq.Insert(initData[i]); } // 删去一半 for (var i = 0; i < n / 2; i++) { pq.DelMax(); } // 插入一半 for (var i = 0; i < n / 2; i++) { pq.Insert(appendData[i]); } // 删除全部 for (var i = 0; i < n; i++) { pq.DelMax(); } stopwatch.Stop(); return(stopwatch.ElapsedMilliseconds); }
public void Run() { Console.WriteLine("Choose file:"); // Prompt Console.WriteLine("1 - tinyPQ.txt"); // Prompt Console.WriteLine("or quit"); // Prompt var fileNumber = Console.ReadLine(); var fieName = string.Empty; switch (fileNumber) { case "1": fieName = "tinyPQ.txt"; break; case "quit": return; default: return; } var @in = new In(string.Format("Files\\Sorting\\{0}", fieName)); var words = @in.ReadAllStrings(); //var list = words.Select(word => new StringComparable(word)).ToList(); //var listComparable = list.Cast<IComparable>().ToList(); //var arrayComparable = list.Cast<IComparable>().ToArray(); var listStrings = words.ToList(); var pq = new MaxPQ<string>(new StringComparer()); //Fill Priority Queue foreach (var word in listStrings) { pq.Insert(word); } // print results foreach (var item in pq) { Console.WriteLine(item); } Console.ReadLine(); }
public void TestMaxPQ() { var arr = CreateRandomArray(10); Insertion <int> .Sort(arr); StdOut.WriteLine(arr); var pq = new MaxPQ <int>(); foreach (int i in arr) { pq.Insert(i); } while (!pq.IsEmpty) { StdOut.WriteLine("delete max: {0}", pq.DelMax()); } }
static void Main(string[] args) { var repeatTime = 1000000; double totalTime = 0; for (var i = 0; i < repeatTime; i++) { var pq = new MaxPQ <char>(); totalTime += test(pq); } Console.WriteLine("Normal MaxPQ: " + totalTime); totalTime = 0; for (var i = 0; i < repeatTime; i++) { var pqNoExch = new MaxPQNoExch <char>(); totalTime += test(pqNoExch); } Console.WriteLine("MaxPQ without Exch: " + totalTime); }
static void Main(string[] args) { int doubleTime = 6; int repeatTime = 6; int n = 1000000; for (int i = 0; i < doubleTime; i++) { int totalDelCount = 0; Console.WriteLine("n=" + n); for (int j = 0; j < repeatTime; j++) { MaxPQ <int> pq = new MaxPQ <int>(n); int delCount = Test(n, pq); totalDelCount += delCount; Console.Write(delCount + "\t"); } Console.WriteLine("平均最大删除次数:" + totalDelCount / repeatTime); n *= 2; } }
static void Main(string[] args) { var doubleTime = 5; var repeatTime = 5; var n = 100000; for (var i = 0; i < doubleTime; i++) { long totalTime = 0; Console.WriteLine("n=" + n); for (var j = 0; j < repeatTime; j++) { var pq = new MaxPQ <int>(n); var time = Test(pq, n); Console.Write(time + "\t"); totalTime += time; } Console.WriteLine("平均用时:" + totalTime / repeatTime + "毫秒"); n *= 2; } }
static void Main(string[] args) { var doubleTime = 6; var repeatTime = 6; var n = 1000000; for (var i = 0; i < doubleTime; i++) { var totalDelCount = 0; Console.WriteLine("n=" + n); for (var j = 0; j < repeatTime; j++) { var pq = new MaxPQ <int>(n); var delCount = Test(n, pq); totalDelCount += delCount; Console.Write(delCount + "\t"); } Console.WriteLine("平均最大删除次数:" + totalDelCount / repeatTime); n *= 2; } }
public void TestMaxPQ() { var pq = new MaxPQ <int>(); for (var i = 0; i < 100; ++i) { pq.Enqueue(i); } Assert.Equal(100, pq.Count); Assert.False(pq.IsEmpty); for (var i = 0; i < 100; ++i) { Assert.Equal(99 - i, pq.DelMax()); Assert.Equal(99 - i, pq.Count); } Assert.True(pq.IsEmpty); foreach (var v in pq) { console.WriteLine("{0}", v); } }
static int Test(int n, MaxPQ <int> pq) { var timer = new Timer(1000); timer.Elapsed += new ElapsedEventHandler(StopRunning); for (var i = 0; i < n; i++) { pq.Insert(random.Next()); } var delCount = 0; StartRunning(); timer.Start(); while (isRunning && !pq.IsEmpty()) { pq.DelMax(); delCount++; } timer.Stop(); return(delCount); }
public int LastStoneWeight(int[] stones) { MaxPQ maxPQ = new MaxPQ(stones); while (maxPQ.Count() >= 2) { int x = maxPQ.RemoveMax(); int y = maxPQ.RemoveMax(); if (x != y) { maxPQ.Insert(Math.Abs(x - y)); } } if (maxPQ.IsEmpty()) { return(0); } else { return(maxPQ.RemoveMax()); } }
public void Initialize() { _target = new MaxPQ<Distance>(); }
public static void Test(){ int[] a = { 23, 12, 9, 30, 2, 1, 50 }; var mpq = new MaxPQ(a); for(int i=1; i<mpq.pq.Length; i++) Out(mpq.pq[i]+" "); }
public IEnumerable<int> KSE_MaxHeap(int[] A, int K){ var pq = new MaxPQ(A); for(int i=0; i<K; i++) yield return pq.DelMax(); }