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]); }
//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]); }