`
luliangy
  • 浏览: 96884 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

二分搜索

阅读更多

二分搜索简单说就是在一个有序的数组中利用二分法的方法搜索我们需要的元素O(logn)。
直接看代码!


 

import java.util.Arrays;

/**
* 用java语言实现二分搜素
* @author Administrator
*
*/
public class BianarySerch {


public static void main(String[] args) {
//定义一个数组,数组必须是有序的,二分查找只能针对有序表;
int[] a={1,2,4,22,33,34,45,48,102,302};
int keyType=22;
//数组排序
Arrays.sort(a);
int ans=BinaSerch(a,keyType);
if(ans==-1){
System.out.println("表中没有该元素");
}else{
System.out.println("已经找到元素,在表中的位置是:"+ans);
}
}

/**
* 二分查找法;
* @param a--数据表;
* @param keyType
*/
public static int BinaSerch(int [] a, int keyType){
int mid;//中间变量;
//定义位置标记;
int start=0,end=a.length-1,site;
while(start<=end){
site=(start+end)/2;
mid=a[site];//取中间值;
if(mid==keyType){
return site;
}else if(mid<keyType){
start=site+1;
}else{
end=site-1;
}
}
return -1;//表示没有找到该元素;
}

}
 



下面用Python实现二分搜索:

'''
Created on 2012-8-2

@author: luliang
'''
#!/usr/bin/env python

aList=[2,6,3,6,2,8]

def binarySerch(num,left,right):
    mid=(left+right)/2
    if right>=left:
        if num==aList[mid]:
            print 'find it the position is:',mid
        else:
            if num<aList[mid]:
                return binarySerch(num, left, mid-1)
            if num>aList[mid]:
                return binarySerch(num, mid, right)

binarySerch(3,0,len(aList)-1)
 

 

分享到:
评论

相关推荐

    java二分搜索法程序,分行显示

    在编程领域,二分搜索法是一种非常高效且实用的算法,尤其在处理有序数据时。本文将详细解析标题“java二分搜索法程序,分行显示”所涉及的Java编程技术,包括二分搜索法的原理、实现以及如何结合数据结构进行文字...

    二分搜索法

    二分搜索法 二分搜索法是一种常用的查找算法,通过将数组分成两个部分,然后逐步缩小查找范围来找到目标元素。下面是对二分搜索法的详细解释: 基本概念 二分搜索法是基于数组的查找算法,它将数组分成两个部分,...

    erfensousuo.zip_二分搜索_二分搜索 matlab_二分法

    二分搜索,也称为二分查找,是一种在有序数组中查找特定元素的高效算法。它的工作原理基于分治思想,将查找区间不断减半,直到找到目标值或确定不存在为止。这种搜索方法在数据量较大且数据有序的情况下非常有用,...

    二分搜索算法

    ### 二分搜索算法知识点详解 #### 一、算法简介 二分搜索(Binary Search),又称折半查找,是一种在有序数组中查找特定元素的高效算法。其基本思想是通过将待查找值与数组中间元素进行比较,不断缩小查找范围,...

    算法设计与分析二分搜索

    "算法设计与分析二分搜索" 本文主要讲解了算法设计与分析中的二分搜索树,讨论了如何构建最优二分搜索树,以减少搜索次数。首先,定义了 MEMBER(x,S) 指令,用于判断 x 是否在集合 S 中。然后,讨论了如何将集合 S ...

    算法分析 二分搜索算法

    **二分搜索算法详解** 二分搜索算法,也称为折半搜索,是一种在有序数组中查找特定元素的有效方法。它的核心思想是通过不断缩小搜索范围,以递归或迭代的方式快速定位目标值。该算法充分利用了数组的有序特性,极大...

    算法设计实验二分搜索法

    二分搜索法,又称折半查找,是一种在有序数组中查找特定元素的高效搜索算法。它的基本思想是将数组分成两半,每次比较中间元素与目标值,根据比较结果缩小搜索范围,直到找到目标元素或者搜索范围为空。这种方法充分...

    算法分析与设计——二分搜索

    算法分析与设计——二分搜索 本文档将详细介绍算法分析与设计中的二分搜索算法,涵盖其基本概念、实现步骤、优缺点分析等方面,旨在帮助算法初学者深入了解二分搜索的原理和应用。 一、基本概念 二分搜索是一种...

    二分搜索的实现

    二分搜索算法的实现,整合了冒泡排序,虽然用的是很常规的东西,但是是自己认真在做的,算是自己程序之路上的一个小小收获吧。

    C++实现的二分搜索

    二分搜索,也称为折半搜索,是一种在有序数组中查找特定元素的高效搜索算法。它的基本思想是通过不断地将搜索区间对半减小来快速定位目标值。这个概念源于数学上的对数函数,因为每次查找都使搜索范围减少一半,所以...

    C语言 二分搜索源代码及界面演示

    二分搜索,也称为折半搜索,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两半,然后比较中间元素与目标值,根据比较结果决定是在左半部分还是右半部分继续搜索。这个过程一直持续到找到目标...

    二分搜索算法及其源代码

    二分搜索算法是一种高效、基于比较的搜索技术,它在有序数据集合中寻找目标值。这个算法的核心思想是不断缩小搜索范围,通过每次迭代将搜索区间减半,从而快速定位到目标元素。二分搜索算法在计算机科学和编程中有着...

    分治法实现二分搜索(c语言)

    二分搜索,也被称为折半查找,是一种在有序数组中查找特定元素的高效算法,它基于分治法的策略。分治法是计算机科学中一种解决问题的通用方法,它将大问题分解为小的、相互独立的子问题,然后分别解决这些子问题,...

    数据结构C++二分搜索树

    ### 数据结构:C++ 实现二分搜索树 #### 概述 本篇文章将详细介绍如何在C++中实现一个二分搜索树(Binary Search Tree,BST),并具体讲解其查找、删除以及输出功能的实现方法。此外,我们还将探讨如何通过构造...

    二分搜索_快速排序_背包问题

    ### 二分搜索 #### 实验目的 - 掌握分治法的基本思想,并学会如何应用这一策略来解决具体的搜索问题。 #### 实验原理 二分搜索算法是一种高效的搜索技术,适用于已排序的数组。其核心思想是通过不断将搜索区间减半...

    二分搜索 设a[0:n-1]是一个已排好序的数组。请改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素的位置I和大于x的最大元素位置j

    设a[0:n-1]是一个已排好序的数组。请改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素的位置I和大于x的最大元素位置j。

    二分搜索(算法 代码)

    二分搜索,也被称为折半搜索,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两半,然后比较中间元素与目标值,根据比较结果决定是在左半部分还是右半部分继续搜索。这个过程不断进行,直到...

    哈工程本科算法实验-二分搜索

    二分搜索,也被称为二分查找,是一种在有序数组中查找特定元素的高效算法。它主要利用了分治的思想,将问题不断分解为更小的子问题,直到找到目标值或者确定目标值不存在。二分搜索的时间复杂度为O(log n),在大数据...

    设a[0:n-1]是一个已排好序的数组。请改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素的位置I和大于x的最大元素位置j

    设a[0:n-1]是一个已排好序的数组。请改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素的位置I和大于x的最大元素位置j

    JAVA开发二分搜索动态演示

    在Java开发中,二分搜索是一种非常重要的数值算法,它被广泛应用于大数据处理、数据库查找以及各种优化问题中。这个“JAVA开发二分搜索动态演示”项目,显然是一个小型的软件应用,它通过动态的方式展示了二分搜索...

Global site tag (gtag.js) - Google Analytics