vlambda博客
学习文章列表

Java-数组(二分查找)

在一组数据中,使用快捷的二分查找,查出一个数据值的位置。

public class TwoSearch { public static void main(String[] args) { //定义要查找的数n int n = 40; //二分查找的数据必须是有序的 int []num = {10,20,30,40,50,60,70,80,90}; //定义最小下标和最大下标 int mix = 0, max = num.length-1; //中间数据下标 int center = (mix+max)/2; while(true){ //若数组中间值大于要查找的数,则比中间值小一个的数给最大值 //若数字中间值小于要查找的数,则比中间值大一个的数给最小值 if(num[center]>n){ max = center-1; }else if(num[center]<n){ mix = center+1; }else { //中间值等于查找的数,跳出循环 break; } if(mix>max){ center=-1; break; } //当边界值发生变化,需要更新中间下标 center = (mix+max)/2; } //输出查找数的在数组的下标 System.out.println(n+"的位置在数组下标的"+center); }}