前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java|实现二分法查找

Java|实现二分法查找

作者头像
算法与编程之美
发布2020-04-20 13:25:42
8840
发布2020-04-20 13:25:42
举报

前言

不知道大家玩过这么一个游戏没---猜数字大小。先在心里想一个100以内的数字,然后参与者来猜数字,每次只提示大了或者小了,直到参与者猜中心中所想的数为止。

怎么来快速猜出来呢?利用二分法查找就可以快速实现。接下来给大家讲解二分法查找的思想,以及如何用java代码实现。

二分法查找的思想

二分法查找又称为折半查找,二分法查找的基本思想是把数组中的元素从小到大有序地存放进数组中,首先将给定值与数组中间位置的值作比较,如果相等,则匹配成功。否则,若比较值小了,则在数组的前半部分继续二分法查找;若比较值大了,则在数组后半部分进行二分法查找。如此循环往复,直到比较值与中间值匹配,完成查找。

流程图:

Java代码实现:

public class test { public static void main(String[] args) { // 定义数组 int[] arr ={81,51,88,15,59,20,1,50,66,77,4}; // 对数组进行升序排序 Arrays.sort(arr); // 打印数组 System.out.println(Arrays.toString(arr)); // 打印查找结果 System.out.println(binarySearch(arr,59)); } public static int binarySearch(int[]arr,int value){ int low = 0; int high = arr.length-1; // 循环直到不能再分 while (low<=high){ int mid = (low+high)/2; if (value == arr[mid]){ // 返回匹配值的下标 return mid; } if (value < arr[mid]){ high = mid-1; } if (value > arr[mid]){ low = mid+1; } } // 如果没有查找到值,则返回404 return 404; } }

效果展示

打印了数组,并输出了查找值的索引。

温馨提示

在这里,有一个非常值得注意的点,二分法查找的前提是排好序的数组。所以我在上面代码中使用了sort()方法,对初始数组进行了排序。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档