二分搜索简单说就是在一个有序的数组中利用二分法的方法搜索我们需要的元素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)
分享到:
相关推荐
二分搜索算法的实现,整合了冒泡排序,虽然用的是很常规的东西,但是是自己认真在做的,算是自己程序之路上的一个小小收获吧。
二分搜索法
二分搜索法 其中包含三个文件求其解析解太难 用二分法 快速搜索 并保证其一定的精度
设a[0:n-1]是一个已排好序的数组。请改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素的位置I和大于x的最大元素位置j。
算法设计与分析中关于二分搜索树的课件,大家可以看一下,高手就不必了吧。
算法分析 二分搜索算法 实验报告 包含实验目的 试验分析和程序代码
算法的实验,背包问题,二分搜索_快速排序_背包问题,若有兴趣可以下载使用。
一个小编程 关于二分搜索法的实验,有需要的可以看看。
一个典型的C++实现的二分搜索算法,实现从文件读取操作数。
分治法实现二分搜索(c语言)
实现二分搜索树的查找、删除、输出 包含构造很析构函数
设a[0:n-1]是一个已排好序的数组。请改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素的位置I和大于x的最大元素位置j
用java实现二分搜索,由用户输入十个数,若十个数不是升序,则重新输入,若按升序输入则输入用户要查找的数,最后输出用户要查找的数在输入数列的位置。内附实验截图
设a[0:n-1]是一个已排好序的数组。请改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素的位置I和大于x的最大元素位置j。当搜索元素在数组中时,I和j相同,均为x在数组中的位置。
用C语言动态实现二分搜索算法,可以清楚的看到算法之行的全部过程。
这是采用递归分治算法写的二分搜索算法, 是为上机考试准备的,呵呵呵
本文档详细描述了算法分析与设计中,二分搜索算法的详尽解释,适合算法初学者。
个人编写的二分搜素算法,可以从大到小搜索,也可从小到大搜索
关于数值算法中二分搜索的一些东西,比如求两个函数的交点。
这是一个动态规划的二分搜索算法的程序 内容包括注释 及源代码 直接下载复制就可运行 其中还包含一个简易的数据生成器