Ejemplo n.º 1
0
        void SiftDown(int n)
        {
            Guess v = heap[n];

            for (var n2 = n * 2; n2 < Count; n = n2, n2 *= 2)
            {
                if (n2 + 1 < Count && heap[n2 + 1].p < heap[n2].p)
                {
                    n2++;
                }
                if (v.p <= heap[n2].p)
                {
                    break;
                }
                heap[n] = heap[n2];
            }
            heap[n] = v;
        }
Ejemplo n.º 2
0
 public void Push(Guess v)
 {
     if (Count >= heap.Length) Array.Resize(ref heap, Count * 2);
     heap[Count] = v;
     SiftUp(Count++);
 }