韩顺平循序渐进学java 第18讲 查找

java中,常用的查找有两种:

1、顺序查找

2、二分查找

18.1 顺序查找

简单。

18.2 二分查找

非常重要,用到递归的方法。

下图为二分查找演示代码运行时,内存中的运行情况。

 韩顺平循序渐进学java 第18讲 查找_第1张图片

二分查找演示代码如下:

 1 /**日期:2016-03-06
 2  * 功能:二分查找演示
 3  */
 4 package test;
 5 
 6 public class Demo4 {
 7 
 8     public static void main(String[] args) {
 9         // TODO Auto-generated method stub
10         
11         //arr如果不是按从小到大的顺序排列,则先进行排序
12         int arr[]={1,2,3,4,5,6};
13         BinaryFind bf=new BinaryFind();
14         bf.find(0, arr.length-1, 1, arr);
15     }
16 
17 }
18 
19 class BinaryFind
20 {    
21     //val为要找的数;arr为待查找的数组(已经按从小到大的方式排序)
22     public void find(int leftIndex,int rightIndex,int val,int arr[])
23     {
24         //首先找到arr中间位置的数
25         int middleIndex=(leftIndex+rightIndex)/2;
26         int middleVal=arr[middleIndex];
27 
28         if(leftIndex<=rightIndex)
29         {
30             //如果要找的数val比数组arr中间的数要小,则应该到middleVal左侧的数种去找
31             if(val<middleVal)
32             {
33                 //此处用到了递归的方法
34                 find(leftIndex,middleIndex-1,val,arr);
35             }else if(val>middleVal)
36             {
37                 find(middleIndex+1,rightIndex,val,arr);
38             }else if(val==middleVal)
39             {
40                 System.out.println("找到数"+val+"\n下标为"+middleIndex);
41             }
42         }
43     }
44 }

 

运行结果如下:

1 找到数1
2 下标为0

 

你可能感兴趣的:(韩顺平循序渐进学java 第18讲 查找)