示例#1
0
        public static T TSearch <T, T2>(IList <T> list, int low, int high,
                                        T2 find, BinarySeachCompare <T, T2> compare)
        {
            if (low > high)
            {
                return(default(T));
            }
            int mid = (low + high) / 2;

            if (compare(list[mid], find) > 0)
            {
                return(TSearch(list, low, mid - 1, find, compare));
            }
            else if (compare(list[mid], find) < 0)
            {
                return(TSearch(list, mid + 1, high, find, compare));
            }
            return(list[mid]);
        }
示例#2
0
        public static T TSearch <T, JR>(IList <T> list, int low, int high,
                                        JR find, BinarySeachCompare <T, JR> compare)
        {
            if (list == null || list.Count == 0)
            {
                return(default(T));
            }
            if (low > high)
            {
                return(default(T));
            }
            var mid = (low + high) / 2;

            if (compare(list[mid], find) > 0)
            {
                return(TSearch(list, low, mid - 1, find, compare));
            }
            else if (compare(list[mid], find) < 0)
            {
                return(TSearch(list, mid + 1, high, find, compare));
            }
            return(list[mid]);
        }