Ejemplo n.º 1
0
    public T Dequeue()
    {
        T ret = list[0];

        list[0] = list[--Count];
        int i = 0;

        while (true)
        {
            int left = (i * 2) + 1;
            if (left >= Count)
            {
                break;
            }
            int right = left + 1;
            int ind   = left;
            if (right < Count && Comparer.Compare(list[left], list[right]) > 0)
            {
                ind = right;
            }
            if (Comparer.Compare(list[i], list[ind]) >= 0)
            {
                T tmp = list[i];
                list[i]   = list[ind];
                list[ind] = tmp;
                i         = ind;
            }
        }
        return(ret);
    }
Ejemplo n.º 2
0
Archivo: 4.cs Proyecto: qifanyyy/CLCDSA
        public void Push(T value)
        {
            if (Count == list.Length)
            {
                T[] tmp = new T[list.Length * 2];
                System.Array.Copy(list, tmp, list.Length);
                list = tmp;
            }
            list[Count++] = value;
            int i = Count - 1;

            while (i > 0 && Comparer.Compare(list[i], list[parent(i)]) < 0)
            {
                T tmp = list[i];
                list[i]         = list[parent(i)];
                list[parent(i)] = tmp;
                i = parent(i);
            }
        }
Ejemplo n.º 3
0
 public int Compare(T x, T y)
 {
     return(comparer.Compare(x, y));
 }