二分查找目标元素索引

原创 2012年03月29日 11:18:02
package com.zhangry.search;

public class BinarySearch {

    public static void main(String[] args) {
        int[] arrayForSearch = {1,2,3,4,5,6,7,8,9,10};
        int start = 0;
        int end = arrayForSearch.length-1;
        int target = 3;
        System.out.println(target+"在此数组中的索引为: "+binarySearch(arrayForSearch,start,end,target));
    }
    
    private static int binarySearch(int[] arrayForSearch,int start,int end,int target){
        int current = (start+end)/2;
        if(arrayForSearch[current] == target){
            return current;
        }else if(arrayForSearch[current] > target){
            end =  current;
            return binarySearch(arrayForSearch,start,end,target);
        }else if(arrayForSearch[current] < target){
            start = current;
            return binarySearch(arrayForSearch,start,end,target);
        }
        return -1;
    }

}

 

 

package com.zhangry.search;

public class WhileBinarySearch {
    /**
     * 二分查找算法
     * @param srcArray 有序数组 
     * @param des 查找元素 *
     * @return des的数组下标,没找到返回-1
     */
    public static int binarySearch(int[] srcArray, int des) {
        int low = 0;
        int high = srcArray.length - 1;
        while (low <= high) {
            int middle = (low + high) / 2;
            if (des == srcArray[middle]) {
                return middle;
            } else if (des < srcArray[middle]) {
                high = middle - 1;
            } else {
                low = middle + 1;
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        int[] src = new int[] { 1, 3, 5, 7, 8, 9 };
        System.out.println(binarySearch(src, 8));
    }
}



 

java二分法实现在有序的数组中定位某数在数组中的位置

在一个有序的数组中,快速查找某值在有序数组中的位置,有人说这很容易啊,直接一个for循环遍历看看数组中哪个值与它相等,输出索引就ok了。这是个很直接的方法,但又没有想过但数组的长度很长时,你遍历一遍是...
  • sunrise_zhu
  • sunrise_zhu
  • 2016年08月04日 00:38
  • 2891

使用二分法查找数组中的元素

上次写了几篇排序的博客,今天写一下查找
  • u010105970
  • u010105970
  • 2014年05月10日 09:22
  • 2745

js检查某个元素在数组中的索引值

在现在代浏览器中判断一个元素在不在一个数组中,咱们可以用Array对象的indexOf()方法来取得这个元素在当前数组中的索引值,若索引值不等于-1,数组中就存在这个元素, 例如: ...
  • gvwxguzy
  • gvwxguzy
  • 2016年11月26日 11:26
  • 3157

如何找到二分查找中目标元素第一次出现和最后一次出现的位置

http://blog.chinaunix.net/uid-27103408-id-3761907.html 关于二分查找有些想不清楚的边界条件问题,在这篇博文里讲得很清楚了。如果能深刻理解...
  • u013086906
  • u013086906
  • 2013年12月21日 17:15
  • 780

二分查找 找一个比目标数小的最大数

Mod(Hrbustoj:2318)DescriptionKim刚刚学会C语言中的取模运算(mod)。他想要研究一下一个数字A模上一系列数后的结果是多少。帮他写个程序验证一下。 Input第一行一个...
  • FlyingDutchman117
  • FlyingDutchman117
  • 2016年12月12日 16:56
  • 204

从二分查找到B+树索引原理

如果现在有一张表t,id为主键,有以下SQL语句: --设在a列上创建了索引 select a from t where a >= 80; select id, a from t where a >=...
  • wukuaiyang
  • wukuaiyang
  • 2017年12月08日 20:03
  • 44

NYOJ练习题 删除元素(二分查找)

删除元素 时间限制:1000 ms  |  内存限制:65535 KB 描述 题意很简单,给一个长度为n的序列,问至少删除序列中多少个数,使得删除后的序列中的最大值最小值 输入多组测试...
  • LYHVOYAGE
  • LYHVOYAGE
  • 2013年10月20日 15:32
  • 1294

【极难】【二分查找】返回两个数组中第k小的元素

题目:来自脑客爱刷题 给定两个有序数组arr1和arr2作为两个输入参数,还有第三个输入参数为K,返回两个数组所有数中,第K小的数(K>=1)。 例如: arr1 = {1,2,3,4,5}; arr...
  • bupt8846
  • bupt8846
  • 2015年01月10日 00:12
  • 404

利用二分查找在添加元素是排序

二分查找的用处就我目前了解的有三种:                                                 1、在已排序的数组中查找元素                 ...
  • fuckluy
  • fuckluy
  • 2016年06月21日 17:26
  • 254

二分查找 —— 有序数组不小于(不大于)某数的第一个(最后一个)元素

def bisearch(l, e, lo, hi): while lo < hi: mi = (lo + hi)//2 if e > l[mi]: lo = ...
  • lanchunhui
  • lanchunhui
  • 2016年06月08日 12:43
  • 829
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二分查找目标元素索引
举报原因:
原因补充:

(最多只允许输入30个字)