`
economist
  • 浏览: 5911 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

二分查找实现

 
阅读更多
package main;

import com.google.common.collect.Lists;

import java.util.ArrayList;

/**
 * Created by shandaiwang on 2016/11/18.
 */
public class BinarySearchDemo {
    public static void main(String[] args) {
        ArrayList<Integer> items = Lists.newArrayList();
        for(int i = 0; i < 10; i++) {
            items.add(2 * i);
        }
        System.out.println(items);
        System.out.println(search(items, 7));
        System.out.println(search(items, 6));
    }

    private static int search(ArrayList<Integer> items, int target) {
        int low = 0;
        int high = items.size() - 1;
        while(low <= high) {
            int mid = (high + low) / 2;
            int midVal = items.get(mid);
            if(midVal < target) {
                low = mid + 1;
            } else if (midVal > target){
                high = mid - 1;
            } else {
                return mid;
            }
        }
        return -1;
    }
}

 

# -*- coding: utf-8 -*-


def binary_search(items, target):
    low = 0
    high = len(items) - 1
    while low <= high:
        mid = (low + high) / 2
        mid_val = items[mid]
        if mid_val > target:
            high = mid - 1
        elif mid_val < target:
            low = mid + 1
        else:
            return mid
    return -1

items = []
for i in range(10):
    items.append(i * 2)

print binary_search(items, 7)
print binary_search(items, 6)

 

 

 

分享到:
评论

相关推荐

    java二分查找实现

    Java 二分查找实现 Java 二分查找是搜索有序数组中某个元素的最常用算法之一。它的实现原理是将数组分成两个部分,然后在其中一个部分继续进行搜索,直到找到目标元素或确定目标元素不存在。下面将详细介绍 Java 二...

    采用二分查找实现有序序列的查找问题

    采用二分查找实现有序序列的查找问题.具体的实现和算法都是很好的示例。希望大家多多学习和使用。

    分治算法之二分查找实现

    二分查找基于分治算法的实现

    C++ 二分查找的实现

    但是,这段代码存在一些问题,比如不正确的二分查找实现以及逻辑错误等。下面我们将逐步分析并指出这些问题。 1. **输入读取** ```cpp cin &gt;&gt; n; // 输入字符串数组大小 string *s1 = new string[n]; // 动态...

    实现二分查找的完美算法 c++

    `Binary_Search_test`文件可能包含了这些测试用例,用于检查我们的二分查找实现是否符合预期。 二分查找算法在实际应用中非常广泛,例如在数据库索引、大规模数据检索和搜索优化等领域都有应用。理解并能熟练掌握二...

    二分查找办法

    本文将深入探讨两种不同的二分查找实现:健忘版和识别版,并分析它们的效率差异。 首先,让我们了解一下基本的二分查找算法。在有序数组中,二分查找通过不断缩小搜索范围来找到目标值。初始时,我们设定查找范围为...

    算法分析与设计-实验二 二分查找实验报告.docx

    `binarySearch_NotRecursion()`函数是非递归的二分查找实现,而`binarySearch_Recursion()`函数则是递归版本的实现。递归版本通常更具概念清晰性,但可能会占用更多的调用栈空间。 二分查找的时间复杂度是O(logn),...

    C+++版二分查找

    #### 二、C++二分查找实现 在给定的代码示例中,作者首先使用了冒泡排序算法对输入的数组进行排序,然后利用递归方式实现了二分查找算法。 #### 三、冒泡排序 冒泡排序(Bubble Sort)是一种简单的排序算法,它重复...

    Python3实现非递归二分查找

    在这个描述中提到的"KarateChop"可能是用来测试二分查找实现的单元测试代码。在Python中,通常使用`unittest`模块进行单元测试。单元测试确保了代码的正确性,对于算法来说,这通常包括测试各种边界条件,如空数组、...

    c++数据结构---二分查找

    ### C++中的二分查找实现 #### 一、二分查找简介 二分查找(Binary Search),又称为折半查找,是一种在有序数组中查找某一特定元素的搜索算法。该算法的工作原理是通过不断地将查找区间分成两部分,比较中间元素与...

    二分查找之网易笔试题

    在这个网易笔试题中,我们将深入探讨两种不同的二分查找实现:基础版本和针对网易笔试题的应用版本。 首先,我们来看基础版本的二分查找。这个版本通常用于查找一个已排序的数组中的目标值。算法的基本思想如下: ...

    二分查找java实现

    二分查找的三种实现方式 分别是: while for 递归

    二分查找算法

    例如,在上述代码中,二分查找算法的实现使用了递归函数,函数BinarySearch将数组Elements分成两个部分,然后根据查找的元素是否在某一部分中,继续对该部分进行二分查找,直到找到该元素或确定该元素不存在于数组...

    二分查找_测试

    在实际编程中,通常会使用循环结构实现二分查找。例如,以下是一个简单的C++实现: ```cpp int binarySearch(int arr[], int left, int right, int target) { while (left ) { int mid = left + (right - left) /...

    用java二分查找法实现日期搜索

    用java二分查找法实现日期搜索 用java二分查找法实现日期搜索 用java二分查找法实现日期搜索

    二分查找的实现

    在实现二分查找时,通常有两种方法:递归和迭代。递归方式更加直观,而迭代方式则可能更节省空间。下面分别对这两种方式进行详细讲解。 1. 递归实现: 递归实现二分查找的代码如下: ```python def binary_search_...

    查找算法集(顺序查找、二分查找、插值查找、动态查找)

    在给定的代码中,二分查找算法函数sq_Dichotomy_Search0实现了有序数组的二分查找。它的参数包括被查找数组、数组元素个数和被查找的关键值。函数返回的值是目标元素在数组中的下标,如果没有找到则返回-1。 插值...

    Python基于二分查找实现求整数平方根的方法

    总结一下,Python中基于二分查找实现求整数平方根的方法涉及了以下知识点: 1. 二分查找算法:如何将搜索范围逐步缩小,以及如何根据比较结果更新搜索边界。 2. 数学运算:平方运算和比较运算在寻找平方根过程中的...

Global site tag (gtag.js) - Google Analytics