コード例 #1
0
        public static T IntSearch <T>(IList <T> list, int low, int high,
                                      int find, BinarySearchGetValue <T, int> get)
        {
            if (list == null || list.Count == 0)
            {
                return(default(T));
            }
            if (low > high)
            {
                return(default(T));
            }
            var mid = (low + high) / 2;

            if (mid >= list.Count)
            {
                return(default(T));
            }
            if (get(list[mid]) > find)
            {
                return(IntSearch(list, low, mid - 1, find, get));
            }
            else if (get(list[mid]) < find)
            {
                return(IntSearch(list, mid + 1, high, find, get));
            }
            return(list[mid]);
        }
コード例 #2
0
ファイル: BinarySearch.cs プロジェクト: jeason0813/AtNet.Cms
        //Int二分
        public static T IntSearch <T>(T[] list, int low, int high,
                                      int find, BinarySearchGetValue <T, int> get)
        {
            if (low > high)
            {
                return(default(T));
            }
            int mid = (low + high) / 2;

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