java二分查找含二分查找代码
目录
一:二分查找的条件
1.1 必须是顺序存储结构
1.2 必须有序序列
二:二分查找思想
当min > max || max < min的时候没有找到
不断的更改mid , 当mid所指向的值等于查找的值的时候查找成功
首先看一个数组,需要对这个数组进行操作。需要对33进行查找的操作,那么target 的值就是33
首先,对 left 的值和 right 的值进行初始化,然后计算 middle 的值
left = 0, right = size - 1
middle = (left (right - left) / 2 )
比较 nums[middle] 的值和 target 的值大小关系
if (nums[middle] > target),代表middle向右所有的数字大于target
if (nums[middle] < target),代表middle向左所有的数字小于target
既不大于也不小于就是找到了相等的值
nums[middle] = 13 < target = 33,left = middle 1
见下图:
循环条件为 while (left <= right)
此时,left = 6 <= right = 11,则继续进行循环
当前,middle = left ((right - left) / 2),计算出 middle 的值
计算出 middle 的值后,比较 nums[middle] 和 target 的值,发现:
nums[middle] = 33 == target = 33,找到目标
三:二分查找代码(循环)
-
package look;
-
-
public class BinarySearch {
-
public static void main(String[] args) {
-
int[] arr = new int[]{1,2,6,7,9};
-
int i = search(arr, 1, 0, arr.length - 1);//(0 , 4)
-
System.out.print(i);
-
}
-
public static int search(int[] arr, int target, int min, int max) {
-
if(min > max || max < min) {
-
return -1;
-
}
-
while(min <= max) {
-
int mid = (min max) / 2;
-
if(arr[mid] == target) {
-
return mid;
-
}
-
if(arr[mid] < target) {
-
min = mid 1;
-
}else if(arr[mid] > target) {
-
max = mid - 1;
-
}else {
-
return -1;
-
}
-
}
-
return -1;
-
}
-
}
四:二分查找代码(递归)
-
package sort;
-
-
import java.util.Arrays;
-
-
public class InsertSort {
-
public static void main(String[] args) {
-
int[] arr = new int[] {1, 2, 3, 4, 5, 6};
-
int i = select(arr, 0, arr.length - 1, 4);
-
System.out.println(i);
-
}
-
public static int select(int[] array, int left, int right, int searchVal) {
-
if(left > right || array[0] > searchVal || array[right] < searchVal) {
-
return -1;
-
}
-
//插值查找
-
// int mid = left (right - left)*(searchVal - array[left])/(array[right] - array[left]);
-
//二分查找
-
int mid = (left right)/2;
-
int midValue = array[mid];
-
if(midValue < searchVal) {
-
return select(array, mid 1, right, searchVal);
-
}else if(midValue > searchVal) {
-
return select(array, left, mid - 1, searchVal);
-
}else {
-
return mid;
-
}
-
}
-
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfifhic
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13