Exemplo n.º 1
0
        public static void push_priority_queue <T>(IList <T> queue, T val, ArrayUtil.CompareFunction <T> comp)
        {
            queue.Add(val);
            int  num  = queue.Count - 1;
            bool flag = num <= 0;

            if (!flag)
            {
                ArrayUtil._push_heap <T>(queue, num, val, comp);
            }
        }
Exemplo n.º 2
0
        private static void _push_heap <T>(IList <T> queue, int hole, T val, ArrayUtil.CompareFunction <T> comp)
        {
            int num = (hole - 1) / 2;

            while (0 < hole && comp(queue[num], val) > 0)
            {
                queue[hole] = queue[num];
                hole        = num;
                num         = (hole - 1) / 2;
            }
            queue[hole] = val;
        }
Exemplo n.º 3
0
        public static T pop_priority_queue <T>(IList <T> queue, ArrayUtil.CompareFunction <T> comp)
        {
            int  num  = queue.Count - 1;
            bool flag = num > 1;

            if (flag)
            {
                int num2 = 0;
                int i    = 2 * num2 + 2;
                T   val  = queue[num];
                queue[num] = queue[0];
                while (i < num)
                {
                    bool flag2 = comp(queue[i], queue[i - 1]) > 0;
                    if (flag2)
                    {
                        i--;
                    }
                    queue[num2] = queue[i];
                    num2        = i;
                    i           = 2 * i + 2;
                }
                bool flag3 = i == num;
                if (flag3)
                {
                    queue[num2] = queue[num - 1];
                    num2        = num - 1;
                }
                ArrayUtil._push_heap <T>(queue, num2, val, comp);
            }
            int index  = queue.Count - 1;
            T   result = queue[index];

            queue.RemoveAt(index);
            return(result);
        }
Exemplo n.º 4
0
 public static void arrayInsert <T>(IList <T> ary, T insertObj, ArrayUtil.CompareFunction <T> compFunc)
 {
 }