二分法查找,数组需要为有序数组。
下面将二分查找算法的思想简单用图展示一下(理解一下为本人粗糙的手工绘图)
package com.java.arraysdemo;
import java.util.Scanner;
//二分法查找,数组需要是有序的。
public class BinarySearch {
public static void main(String[] args) {
int [] array = new int[]{-99,-56,-45,-12,12,22,33,56,94};
boolean flag = true;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入您需要寻找的数:");
while(flag){
int number = scanner.nextInt(); //需要寻找的数
int first = 0; //首索引的位置
int last = array.length; //尾索引的位置
while(first <= last){
int middle = (first + last) / 2; //定位middle的位置
if(array[middle] == number){
flag = false;
System.out.println("所找的数字索引位置为:数组的第"+(middle + 1)+"个位置");
break;
}else if(array[middle] < number){
first = middle + 1;
}else{
last = middle - 1;
}
}
if(flag == true){
System.out.println("未找到需要寻找的数!请重新输入:");
}
}
}
}