二分查找目标元素索引

原创 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));
    }
}



 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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

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

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

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

二分查找法及判断一个数组中是否有两个元素之和为指定值

请给出一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合里快速判断是否存在两个元素,其和等于某一指定值key。   方法一:  思路: 1.对数组进行归并排序或快速排序,...

程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】

6、分别用递归和非递归实现二分查找算法 分析:

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

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

利用二分查找在循环递增数组中检索一个元素

这是我在校园招聘面试时被问到的一个问题。问题是:     在一个循环递增数组中检索一个元素的时间复杂度较低的算法。 所谓循环递增数组就是,假设一个长度为n的数组A,存在一个有效下标r(下标从0...

浅谈PHP第三弹---使用二分查找法查找数组中的元素位置

在php中我们可以通过array_search()函数来查找一个数组内的元素值的键名. 同样,我们可以通过使用二分法来查找数组内的元素的键名. 那什么是二分法呢? 我来解释下: 如果数...

有序(循环)数组查找元素-二分查找法

1.我们将一个有序数组(n个元素)从i(号位置)之前放到n位置之后形成的数组为有序循环数组。 2.数组 1 2 4 5 6 7 8    的有序循环数组有   1 2 4 5 6 7 8 (元数组是位...

数组的二分查找法查找元素以及查处删除元素

package 算法demo; public class 二分法 { public static void main(String[] args) { // TODO Auto-genera...

二分查找教程

  • 2014-10-11 22:40
  • 226KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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