1、仅 当 列表 是 有序 的 时候, 二分 查找 才 管用。
2、一般而言, 对于 包含 n 个 元素 的 列表, 用 二分 查找 最多 需要 log2n 步, 而 简单 查找 最多 需要 n 步。
class Program { static void Main(string[] args) { int[] arr =new int[]{ 1,3,5,7,9,11,28,32,43,57,69,74,82,98,108,231,456 }; Dichotomy(arr); Console.ReadKey(); } public static void Dichotomy(int[] arr) { Console.WriteLine("请输入数字:"); string itemStr = Console.ReadLine(); int item = 0; try { item = Convert.ToInt32(itemStr); int mid = 0; int low = 0; int high = arr.Length - 1; //只要范围没有缩小到只包含一个元素 while (low <= high) { mid = (low + high) / 2;//获取中间的元素 Console.WriteLine($"low:{low}high:{high}mid:{mid}"); int guess = arr[mid]; if (guess == item) { Console.WriteLine($"数字{item}在数组的第{mid}位置上"); break; } //猜测的数字大了 if (guess > item) { high = mid - 1; } else if (guess < item) { low = mid + 1; } } if (low > high) { Console.WriteLine($"此数组不包含数字:{ itemStr}"); } } catch (Exception) { Console.WriteLine("您输入的不是数字,请重新输入"); Dichotomy(arr); } } }