二分法查找的实现【java实现二分法查找】

发布于 2021-10-31 05:36:18      浏览 181

二分法查找的实现【java实现二分法查找】

详情:

1、
欢迎访问抉信网 www.juexinw.com
1.理清思路:首先得明确最简单的基础,就是如何实现二分法查找,很简单的想到的是取中间值,比较要查找的值,查找对象。我们可以先创建一个类,进行简单的处理。如下图:
2、
欢迎访问抉信网 www.juexinw.com
class find{
3、
欢迎访问抉信网 www.juexinw.com
public int Dicfind(int min,int max,int a[],int value){
4、
欢迎访问抉信网 www.juexinw.com
return value;}
5、
欢迎访问抉信网 www.juexinw.com
}
6、
欢迎访问抉信网 www.juexinw.com
2.定义一个类,然后写一个方法来接收一个数组的下标和要查找的值,二分法首先是对中间那个数和要查找的数进行比较,即有
7、
欢迎访问抉信网 www.juexinw.com
class find{
8、
欢迎访问抉信网 www.juexinw.com
public int Dicfind(int min,int max,int a[],int value){
9、
欢迎访问抉信网 www.juexinw.com
int mid=(min+max)/2;
10、
欢迎访问抉信网 www.juexinw.com
//比较a[mid]和value
11、
欢迎访问抉信网 www.juexinw.com
if(a[mid]>value){
12、
欢迎访问抉信网 www.juexinw.com
}
13、
欢迎访问抉信网 www.juexinw.com
return value;
14、
欢迎访问抉信网 www.juexinw.com
}
15、
欢迎访问抉信网 www.juexinw.com
}
16、
欢迎访问抉信网 www.juexinw.com
3.现在就是思考的难点来了,如何分析并继续下一步查找问题,例如给你一组数据a[]={1,2,4,5,6};查找的值为2,第一次查找mid=2;a[2]>2;那么如何进行下一步查找呢,这里我们使用递归调用,这就是为什么我们要设置方法返回类型为int的原因(实现递归)。代码如下:
17、
欢迎访问抉信网 www.juexinw.com
class find{
18、
欢迎访问抉信网 www.juexinw.com
public int Dicfind(int min,int max,int a[],int value){
19、
欢迎访问抉信网 www.juexinw.com
int mid=(min+max)/2;
20、
欢迎访问抉信网 www.juexinw.com
int i=0;
21、
欢迎访问抉信网 www.juexinw.com
//比较a[mid]和value
22、
欢迎访问抉信网 www.juexinw.com
if(a[mid]>value){
23、
欢迎访问抉信网 www.juexinw.com
return Dicfind(min,mid-1,a,value);
24、
欢迎访问抉信网 www.juexinw.com
}
25、
欢迎访问抉信网 www.juexinw.com
return value;
26、
欢迎访问抉信网 www.juexinw.com
}
27、
欢迎访问抉信网 www.juexinw.com
}
28、
欢迎访问抉信网 www.juexinw.com
4.同理进行a[mid]<value;a[mid]>value;a[mid]=value的出理,具体代码如下:
29、
欢迎访问抉信网 www.juexinw.com
class find{
30、
欢迎访问抉信网 www.juexinw.com
public int Dicfind(int min,int max,int a[],int value){
31、
欢迎访问抉信网 www.juexinw.com
int mid=(min+max)/2;
32、
欢迎访问抉信网 www.juexinw.com
//比较a[mid]和value
33、
欢迎访问抉信网 www.juexinw.com
if(a[mid]>value){
34、
欢迎访问抉信网 www.juexinw.com
return Dicfind(min,mid-1,a,value);
35、
欢迎访问抉信网 www.juexinw.com
} if(a[mid]<value){
36、
欢迎访问抉信网 www.juexinw.com
return Dicfind(mid+1,max,a,value);
37、
欢迎访问抉信网 www.juexinw.com
}
38、
欢迎访问抉信网 www.juexinw.com
if(a[mid]==value){
39、
欢迎访问抉信网 www.juexinw.com
System.out.println("查到这个数了:是第"+(mid+1)+"数");
40、
欢迎访问抉信网 www.juexinw.com
}
41、
欢迎访问抉信网 www.juexinw.com
return value;
42、
欢迎访问抉信网 www.juexinw.com
}
43、
欢迎访问抉信网 www.juexinw.com
}
44、
欢迎访问抉信网 www.juexinw.com
5.然后在main方法中测试一下,具体代码如下,为了方便调用我们把方法写出静态的,方便使用。执行看到效果(下图所示)!具体代码如下:
45、
欢迎访问抉信网 www.juexinw.com
package demo2;
46、
欢迎访问抉信网 www.juexinw.com
public class Test {
47、
欢迎访问抉信网 www.juexinw.com
public static void main(String[] args) {
48、
欢迎访问抉信网 www.juexinw.com
// TODO Auto-generated method stub
49、
欢迎访问抉信网 www.juexinw.com
int[] a={1,2,3,4,5};
50、
欢迎访问抉信网 www.juexinw.com
find.Dicfind(0, a.length-1, a, 2);
51、
欢迎访问抉信网 www.juexinw.com
}
52、
欢迎访问抉信网 www.juexinw.com
}
53、
欢迎访问抉信网 www.juexinw.com
class find{
54、
欢迎访问抉信网 www.juexinw.com
public static int Dicfind(int min,int max,int a[],int value){
55、
欢迎访问抉信网 www.juexinw.com
int mid=(min+max)/2;
56、
欢迎访问抉信网 www.juexinw.com
//比较a[mid]和value
57、
欢迎访问抉信网 www.juexinw.com
if(a[mid]>value){
58、
欢迎访问抉信网 www.juexinw.com
return Dicfind(min,mid-1,a,value);
59、
欢迎访问抉信网 www.juexinw.com
} if(a[mid]<value){
60、
欢迎访问抉信网 www.juexinw.com
return Dicfind(mid+1,max,a,value);
61、
欢迎访问抉信网 www.juexinw.com
}
62、
欢迎访问抉信网 www.juexinw.com
if(a[mid]==value){
63、
欢迎访问抉信网 www.juexinw.com
System.out.println("查到这个数了:是第"+(mid+1)+"数");
64、
欢迎访问抉信网 www.juexinw.com
}
65、
欢迎访问抉信网 www.juexinw.com
return -2;
66、
欢迎访问抉信网 www.juexinw.com
}
67、
欢迎访问抉信网 www.juexinw.com
}
68、
欢迎访问抉信网 www.juexinw.com
6.如果你觉得这就算完成了二分法查找这个例子的话,那你就还需要思考更多。比如,如果没有这个数怎么办,你可以在上面那个代码中测试,然后寻找问题。以下是本人思考后,对简单二分法查找数组元素的优化代码。仅供参考!
69、
欢迎访问抉信网 www.juexinw.com
package demo2;
70、
欢迎访问抉信网 www.juexinw.com
public class Test {
71、
欢迎访问抉信网 www.juexinw.com
public static void main(String[] args) {
72、
欢迎访问抉信网 www.juexinw.com
// TODO Auto-generated method stub
73、
欢迎访问抉信网 www.juexinw.com
int[] a={1,3,4,5};
74、
欢迎访问抉信网 www.juexinw.com
for(int i=0;i<6;i++){
75、
欢迎访问抉信网 www.juexinw.com
System.out.println("查找的数字"+i);
76、
欢迎访问抉信网 www.juexinw.com
find.Dicfind(0, a.length-1, a, i);
77、
欢迎访问抉信网 www.juexinw.com
}
78、
欢迎访问抉信网 www.juexinw.com
}
79、
欢迎访问抉信网 www.juexinw.com
}
80、
欢迎访问抉信网 www.juexinw.com
class find{
81、
欢迎访问抉信网 www.juexinw.com
public static int Dicfind(int min,int max,int a[],int value){
82、
欢迎访问抉信网 www.juexinw.com
if(a[0]>value||a[max]<value){
83、
欢迎访问抉信网 www.juexinw.com
System.out.println("没有这个数!");
84、
欢迎访问抉信网 www.juexinw.com
}else{
85、
欢迎访问抉信网 www.juexinw.com
int mid=(min+max)/2;
86、
欢迎访问抉信网 www.juexinw.com
//比较a[mid]和value
87、
欢迎访问抉信网 www.juexinw.com
if(a[mid]>value){
88、
欢迎访问抉信网 www.juexinw.com
return Dicfind(min,mid-1,a,value);
89、
欢迎访问抉信网 www.juexinw.com
} if(a[mid]<value){
90、
欢迎访问抉信网 www.juexinw.com
return Dicfind(mid+1,max,a,value);
91、
欢迎访问抉信网 www.juexinw.com
}
92、
欢迎访问抉信网 www.juexinw.com
if(a[mid]==value){
93、
欢迎访问抉信网 www.juexinw.com
System.out.println("查到这个数了:是第"+(mid+1)+"数");
94、
欢迎访问抉信网 www.juexinw.com
}else return value;}
95、
欢迎访问抉信网 www.juexinw.com
return value;
96、
欢迎访问抉信网 www.juexinw.com
}
97、
欢迎访问抉信网 www.juexinw.com
}

上一篇:Creo如何创建骨架模型 下一篇:历届世界杯金球奖得主都有哪些

相关推荐

  • 微信收藏文件过大无法查看怎么办
    微信收藏文件过大无法查看怎么办 以华为v6为例,微信收藏文件过大无法查看的解决方法如下: 1.首先打开手机,进入手机的文件管理器; 2.依次打开Tencent.MicroMsg.Downloa……

    其他 发布于 2022-06-12 01:18:01 浏览 523

  • 苹果手机查找朋友位置不可用是什么情况
    苹果手机查找朋友位置不可用是什么情况 1.估计是查找的iPhone没有打开定位或者是数据连接和wifi。要使用查找我的朋友定位,首先需要在自己和朋友家人的IOS设备上下载安装……

    手机 发布于 2022-06-07 15:18:07 浏览 300

  • 苹果查找位置刷新不了
    苹果查找位置刷新不了 苹果查找位置刷新不了是由于在此之前打开系统的访问限制功能,导致锁定了定位服务,不能进行设置。

    其他 发布于 2022-06-07 08:45:29 浏览 245

  • 怎样查找删除的聊天记录
    怎样查找删除的聊天记录 以微信为例,找回删除的聊天记录,其方法是: 1.首先打开微信,点击我,选择设置; 2.找到帮助与反馈并点击进入; 3.然后点击右上角小工具的图……

    其他 发布于 2022-06-05 22:44:31 浏览 204

  • word查找替换快捷键
    word查找替换快捷键 word中查找的快捷方式是:Ctrl+F;word中替换的快捷方式是:Ctrl+H。使用查找替换的方法: 1.打开Word文档,在页面开始的状态下按下键盘上……

    其他 发布于 2022-05-30 16:26:24 浏览 257

  • 查找我的iphone显示旧位置
    查找我的iphone显示旧位置 查找我的iphone显示旧位置的原因可能是: 1.网络不稳定; 2.定位不同步。

    手机 发布于 2022-05-30 12:47:11 浏览 266

  • 怎么查找一个人的位置
    怎么查找一个人的位置 以微信为例,查找一个人的位置的方法如下: 1.打开手机,点击微信APP。 2.找到你想查看位置的好友,然后点击该好友发送消息。 3.点击屏幕……

    其他 发布于 2022-05-30 08:00:25 浏览 267

  • wps查找在哪
    wps查找在哪 wps查找的位置及打开方式有: 1.wps界面中点击右上角的查找,在下拉选项里面选择查找即可; 2.使用Ctrl加F组合键调出查找对话框。 ……

    其他 发布于 2022-05-26 00:02:23 浏览 192

  • qq账号查找不到怎么办
    qq账号查找不到怎么办 1.首先用电脑登录QQ,然后点击主页面左下角三横小图标。 2.接着会弹出一个小界面,其次点击设置选项。 3.之后弹出的界面中点击权限设……

    其他 发布于 2022-05-25 10:55:34 浏览 180

  • 抖音由于对方的隐私设置无法查看
    抖音由于对方的隐私设置无法查看 抖音里由于对方隐私设置暂时无法关注对方是抖音新增的一个私密账号的功能,这样可以避免很多人的骚扰。原因就是对方的抖音账号设置……

    其他 发布于 2022-05-17 23:04:06 浏览 345