在java中,常用的查找有两种:
1、顺序查找
2、二分查找
简单。
非常重要,用到递归的方法。
下图为二分查找演示代码运行时,内存中的运行情况。
二分查找演示代码如下:
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
原文:http://www.cnblogs.com/PistonType/p/5248949.html