查找--二分算法

public class HellowWorld {
public static void main(String[] argv ) {
int[] arr= new int[]{1,3,6,9,13,16,21,26,30,35};
int num=30;//要查找的值
int low=0;//最左边的下标值
int high=arr.length-1;//最右边的下标值
int mid=(low+high)/2;
while(arr[mid]!=num&&low!=high)
{
    //arr[mid]<num 代表要找的值在中间的右边
    if(arr[mid]<num )
    {
        low=mid+1;
    }
    //arr[mid]>num 代表要找的值在中间的左边
    else if(arr[mid]<num )
    {
        high=mid-1;
    }
    mid=(low+high)/2; //重新计算中间值
}
 if(low==high)
 {
     System.out.println("没有这个值");
 }
 else
 {
     System.out.println("下标是:"+mid);
 }
}//endmain
}//endclass

红色的是重点 二分需要是有序的数组 缺点:1.查找数在很前面 ,当我的数比较靠前的时候,依次查找可能更快点 2.增删操作不具备随意性

posted @ 2019-06-16 16:10  三十六烦恼风x  阅读(106)  评论(0编辑  收藏  举报