二分法查找-java案例详解

/**

* 功能:二分查找

* 基本思想:

* 假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,

* 如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的

* 前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到

* 找到为止。

* 作者:徐守威

*/

package com.xushouwei;

public class T8 {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

int arr[]={2,5,7,12,25};

//实现查找

BinaryFind binaryfind=new BinaryFind();

//调用find方法

binaryfind.find(0, arr.length-1, 12, arr);

}

}

//定义一个类

class BinaryFind

{

//这里的val是定义要被查找的数

public void find(int leftIndex,int rightIndex,int val,int arr[])

{

//首先找到中间的这个数

int midIndex=(rightIndex+leftIndex)/2;

//得到中间的那个数

int midVal=arr[midIndex];

//要不停的查找必须满足左边的数大于右边的数

if(rightIndex>=leftIndex)

{

//如果要找的数比midVal大

if(midVal>val)

{

//在arr数组的左边去找(递归方法实现)

find(leftIndex,midIndex-1,val,arr);

}

else if(midVal<val)

{

//在arr数组的右边去找(递归方法实现)

find(midIndex+1,rightIndex,val,arr);

}

else if(midVal==val)

{

System.out.println("要找的就是这个数,该数下标为:"+midIndex);

}

}

}

}

上一篇:转:关于http server - 来自百度知道,留存备读


下一篇:Java 8新特性探究(八)精简的JRE详解