您的位置:首页 > 其它

二分查找

2013-12-10 22:34 106 查看
二分算法

二分查找是一种高效率线性表的查找算法。在查找时必须将线性表中的关键字排好序。

基本思路如下:

1、先确定线性表的中间位置 mid=(first+last)/2

2、比较所要查找的关键字b与中间位置的关键字的大小,如果相等则输出“是”

3、如果大于中间值,就到后半部分查找;如果查到就返回“是”,否则返回“否”

4、如果小于中间值,就到前半部分查找;如果查到就返回“是”,否则返回“否”

package example;

import java.util.Arrays;
import java.util.Scanner;

public class Suanfa {

//查找方法
public static String searchTest(int[] array, int value){
if(array.length==0){
return "数组为空!!";
}else{
//定义该序列的起始下标
int startIndex = 0;
//末尾下标的动态值
int endIndex =  array.length-1;
//中间值下标=(起始下标+末尾下标)/2
int middle = (startIndex+endIndex)/2;//在此例子数组中等于3.5

//用while循环查找
while(endIndex >= startIndex){
if(value == array[middle]){
System.out.println("是");
break;
}else if(value > array[middle]){
startIndex = middle+1;
middle = (startIndex+endIndex)/2;
//System.out.println("开始下标为:"+startIndex+"============"+"中间下标为:"+middle);
if(value == array[middle]){
System.out.println("是");
}else{
System.out.println("否");
}
break;
}else if(value < array[middle]){
endIndex = middle - 1;
middle = (startIndex+endIndex)/2;
if(value == array[middle]){
System.out.println("是");
}else{
System.out.println("否");
}
break;
}

}

return "数组中无该数值";
}
}

public static void main(String[] args) {
//定义一数字序列
int[] a = {1,2,3,4,5,6,7,8,9,10};
//int[] a = {1,3,4,5,8,7,9,11,15};

//先升序排序
Arrays.sort(a);

//通过在控制台输入input值
Scanner sc = new Scanner(System.in);
System.out.println("请输入您要查找的数字:");
int input =  sc.nextInt();

//调用查找的方法,传入要查找的数字
searchTest(a,input);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: