数据结构:二分查找与二叉树

  • 关于二分查找,原理其实不难,而且java Arrays类里面有一个sorts()方法,可以先对数据进行排序,然后调用binarySerarch()方法,这个方法就是进行二分查找用的。
  • 下面是JDK的源代码:
 private static int binarySearch0(long[] a, int fromIndex, int toIndex,
                                     long key) {
        int low = fromIndex;
        int high = toIndex - 1;

        while (low <= high) {
            int mid = (low + high) >>> 1;
            long midVal = a[mid];

            if (midVal < key)
                low = mid + 1;
            else if (midVal > key)
                high = mid - 1;
            else
                return mid; // key found
        }
        return -(low + 1);  // key not found.
    }
  • 说下原理:一个有序数组,需要查找某一个数组中某一个值,二分查找就就是先按照数组下标加一,然后除以二,之后向下取余。也就是数组{2,3,4}按照下标算toIndex 最大是二,(2+1)/2 = 1…1直接取1,数组下标为一的数是3。然后我们拿到这个中值a,如果我们要查的值比a这个值小,这时a就变成最大值,再按照上述方式进行循环查找。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值