示例#1
0
        public static int BinaryBound <T1, T2>(this List <T1> list, T2 t, Comparison2 <T1, T2> comp, int begin, int end)
        {
            int count = end - begin;
            int idx;
            int step;

            while (count > 0)
            {
                idx  = begin;
                step = count / 2;
                idx += step;
                if (comp(list[idx], t) < 0)
                {
                    begin  = ++idx;
                    count -= step + 1;
                }
                else
                {
                    count = step;
                }
            }
            return(begin);
        }
示例#2
0
 public static int BinaryBound <T1, T2>(this List <T1> list, T2 t, Comparison2 <T1, T2> comp)
 {
     return(list.BinaryBound(t, comp, 0, list.Count));
 }