如何做网站策划案,文化公司做网站交文化事业费吗,找做金融的网站有哪些方面,国内建设地铁的公司网站必要前提#xff1a;有序数组
算法简述#xff1a;通过不断取中间值和目标target值进行比较#xff08;中间值#xff1a;mid (left right) / 2#xff09;
如果目标值等于中间位置的值#xff0c;则找到目标#xff0c;返回中间位置如果目标值小于中间位置的值有序数组
算法简述通过不断取中间值和目标target值进行比较中间值mid (left right) / 2
如果目标值等于中间位置的值则找到目标返回中间位置如果目标值小于中间位置的值则在左半部分继续查找更新右边界为 right mid - 1如果目标值大于中间位置的值则在右半部分继续查找更新左边界为 left mid 1
二分查找的时间复杂度 O(log n)其中 n 是要查找的元素个数通常是一个有序数组的长度。
java代码实现 // 二分查找方法public static int binarySearch(int[] array, int target) {int left 0;int right array.length - 1;while (left right) {int mid left (right - left) / 2;if (array[mid] target) {return mid; // 找到目标值返回索引} else if (array[mid] target) {left mid 1; // 目标值在右半部分} else {right mid - 1; // 目标值在左半部分}}return -1; // 没有找到目标值}
这里解释一下为什么中间值用这种int mid left (right - left) / 2写法
而不是这种int mid (right left) / 2;
1避免溢出风险
在 Java 中int类型的最大值是 2^31 - 1如果 left 和 right 非常大直接计算 mid (left right) / 2; 可能会导致溢出。
2清晰明了
使用 left (right - left) / 2 明确地展示了计算 mid 的逻辑使得代码更加清晰易懂。直观地表达了将 left 和 right 之间的中点作为 mid 的计算方法。
github中二分法图像化展示
二分法html欢迎各位直接拉到本地展示使用 力扣中关于二分法的题目编号 简单难度 7043527837469 中等难度 3334240162300 困难难度 4154287875668