示例#1
0
        private static void Main(string[] args)
        {
            MaxHeap s = new MaxHeap();

            s.Enqueue(1);
            Console.WriteLine(s.count);
        }
示例#2
0
 public void AddNum(int num)
 {
     if (max.count == 0)
     {
         max.Enqueue(num);
     }
     else if (max.count == min.Count)
     {
         if (num < max.GetMax())
         {
             max.Enqueue(num);
         }
         else
         {
             min.Add(num);
         }
     }
     else if (max.count > min.Count)
     {
         if (num > max.GetMax())
         {
             min.Add(num);
         }
         else
         {
             int prev = max.GetMax();
             min.Add(prev);
             max.Dequeue();
             max.Enqueue(num);
         }
     }
     else
     {
         if (num < min.Min)
         {
             max.Enqueue(num);
         }
         else
         {
             int prev = min.Min();
             max.Enqueue(prev);
             min.Remove(prev);
             min.Add(num);
         }
     }
 }