美文网首页
14二分查找

14二分查找

作者: shenlong77 | 来源:发表于2017-10-26 20:12 被阅读0次

1 注意比较的时候比较的是值还是下标
2 startIndex>=endIndex,第一次写成了<=
3 数组中有多个重复值得时候怎么办,写进一个list里

class Solution {
    /**
     * @param nums: The integer array.
     * @param target: Target to find.
     * @return: The first position of target. Position starts from 0.
     */
    public int binarySearch(int[] nums, int target) {
        //write your code here
        if(nums==null||nums.length==0||target<nums[0]||target>nums[nums.length-1]){
            return -1;
        }
        int startIndex=0;
        int endIndex=nums.length-1;
        int middleIndex;
        ArrayList indexList=new ArrayList();
        while(true){
            middleIndex=(startIndex+endIndex)/2;
            if(nums[middleIndex]==target){
                indexList.add(middleIndex);
            }
            if(startIndex>=endIndex){
                if(indexList.size()==0)
                    return -1;
                else
                    return (int)indexList.get(indexList.size()-1);
            }else{
                if(target<=nums[middleIndex]){
                    endIndex=middleIndex-1;
                }else{
                    startIndex=middleIndex+1;
                }
            }
        }
    }
}

相关文章

  • python二分查找算法

    文章概述 二分查找法介绍 简单查找与二分查找对比 二分查找  二分查找算法主要思想:在有序列表中查找指定元素,先从...

  • 数据结构和算法--二分查找

    二分查找 二分查找的思想 二分查找(Binary Search)算法,也叫折半查找算法。 二分查找针对的是一个有序...

  • 14二分查找

    1 注意比较的时候比较的是值还是下标2 startIndex>=endIndex,第一次写成了<=3 数组中有多个...

  • 二分查找

    [TOC] 二分查找的基础模板 二分查找靠左的Index基础模板 二分查找靠右的Index基础模板 二分查找插入t...

  • 二分查找法

    二分查找法 二分查找法(递归)

  • 二分查找(递归、非递归)

    二分查找(递归) 二分查找(非递归)

  • 二分查找(递归、非递归)

    二分查找(递归) 二分查找(非递归)

  • 二分查找

    什么是二分查找?二分查找,也叫折半查找(Binary Search),它是一种效率较高的查找方法。二分查找的条件:...

  • 分治算法(swift二分法排序递归实现)

    二分查找 1、二分查找(Binary Search) 2、二分查找的基本思想 swift算法实现

  • 可查找重复元素的二分查找算法

    可查找重复元素的二分查找算法 二分查找算法思想:又称为 折半查找,二分查找适合对已经排序好的数据集合进行查找。假设...

网友评论

      本文标题:14二分查找

      本文链接:https://www.haomeiwen.com/subject/tfflpxtx.html