二分查找
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
如何有序排列写过——排序算法(详情点击进入)。
package demo02;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
int []a= {1,2,3,5,6,7,8,9};
int min=0; //数组最小值索引初始化赋值
int max=a.length-1; //数组最大值索引初始化赋值
int mid=(min+max)/2; //数组中间值索引初始化赋值
Scanner sc=new Scanner(System.in);
System.out.println("请输入要查找的元素:");
int i=sc.nextInt(); //键盘输入要查找的元素
int index=-1; //所要找的元素索引初始化赋值
boolean flag= false;
while(min<=max) { //根据最小值不可能大于最大值来做判断条件
if(a[mid]==i) { //元素等于中间值
flag=true;
index=mid; //中间值索引赋值给所找元素索引
break;
}else if(a[mid]>i) { //如果元素小于中间值
max=mid-1; //因元素小于中间值,改变所找范围,将新范围最大值索引赋值替换原来的最大值索引
}else if(a[mid]<i) { //如果元素大于中间值
min=mid+1; //因元素大于中间值,改变所找范围,将新范围最小值索引赋值替换原来的最小值索引
}
mid=(min+max)/2; //将新范围中间值索引赋值替换原来的中间值索引
}
if(flag==true) { //通过一个布尔值判断输出。
System.out.print("元素所在数组索引为:"+index);
}else {
System.out.print("该数组没有元素"+i);
}
}
}