二分法查找数组中的元素(原创)

/**
 * 2018。7.30
 * 作者:小孟鱼
 * 功能:二分查找(前提是是一个有序数组)
 */
package com.test4;

public class Shuzuerfenchazhao {
            public static void main(String[] args) {
            int arr[]= {1,2,3,5,89,100,214};
            BinaryFind bf=new BinaryFind();
            bf.find(0, arr.length-1, 5, arr);
            
            }
}
class BinaryFind
{

    public void find(int leftIndex,int rightIndex,int val, int arr[]) {
         //首先找到中间的这个数
         int midIndex=(rightIndex+leftIndex)/2;
        int midVal=arr[midIndex];
        if(rightIndex>=leftIndex) {
         
        //如果要找的数比midIndex小
        if(midVal>val) {
            //在arr左边数中找
            find(leftIndex,midIndex-1,val,arr);
        }else if(midVal<val) 
        {
            //在arr的右边的数找
            find(midIndex,rightIndex+1,val,arr);
        }else if(midVal==val) 
        {
            System.out.println("找到下标"+midIndex);
        }
     }
 }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值