`
googya
  • 浏览: 143371 次
  • 性别: Icon_minigender_1
  • 来自: 汉川
社区版块
存档分类
最新评论

二分查找法

阅读更多
    今天在csdn上看到了这么一篇文章只有10%的程序员能正确写出二分查找法,我看了觉得挺有意思的,c入门的时候也写过这个小程序,不过很多年没碰它了,还真有点生疏,我是到wikipedia重新看了一遍才写了如下代码的。没有测试,不知道是否完全正确。采用递归,各位还有无其他更好的方法?


def search a,left,right,n	
		if(right < left)
			return "not found"
		end
	mid=left+((right-left)/2)
	if(a[mid]>n)
		 search(a,left,mid-1,n)
	elsif a[mid]<n
		 search(a,mid+1,right,n)
	else
	   mid
	end
end

def binary_search(a,target)
	search(a,0,a.size-1,target)
end


a=[1,2,3,45,4,5,6,7,7,8,23]
 a.sort!
p binary_search(a,9)
0
1
分享到:
评论
4 楼 googya 2010-08-06  
xiaobian 写道
<script>
	/**
	* binarySearch
	* 二分查找法
	* dest 要查找的对象
	*/
	Array.prototype.binarySearch =function(dest){
		var low = 0;
		var high = this.length - 1;
		
		while(low <=high){
			var middle = (low + high) >> 1;
	
			if(dest == this[middle]){
				return middle;
			}else if(dest < this[middle]){
				high = middle - 1;
			}else if(dest > this[middle]){
				low = middle + 1;
			}
		}
		return -1;
	}
	var oArr = new Array();
	for (var i=0;i<100 ;i++ )
	{
		oArr[i] = i + 1;
	}
	alert(oArr);
	alert(oArr.binarySearch(100));
</script>



js版本的也很容易懂哈
3 楼 xiaobian 2010-08-05  
<script>
	/**
	* binarySearch
	* 二分查找法
	* dest 要查找的对象
	*/
	Array.prototype.binarySearch =function(dest){
		var low = 0;
		var high = this.length - 1;
		
		while(low <=high){
			var middle = (low + high) >> 1;
	
			if(dest == this[middle]){
				return middle;
			}else if(dest < this[middle]){
				high = middle - 1;
			}else if(dest > this[middle]){
				low = middle + 1;
			}
		}
		return -1;
	}
	var oArr = new Array();
	for (var i=0;i<100 ;i++ )
	{
		oArr[i] = i + 1;
	}
	alert(oArr);
	alert(oArr.binarySearch(100));
</script>
2 楼 xiaobian 2010-08-05  
<script>
/**
* binarySearch
* 二分查找法
* dest 要查找的对象
*/
Array.prototype.binarySearch =function(dest){
var low = 0;
var high = this.length - 1;

while(low <=high){
var middle = (low + high) >> 1;

if(dest == this[middle]){
return middle;
}else if(dest < this[middle]){
high = middle - 1;
}else if(dest > this[middle]){
low = middle + 1;
}
}
return -1;
}
var oArr = new Array();
for (var i=0;i<100 ;i++ )
{
oArr[i] = i + 1;
}
alert(oArr);
alert(oArr.binarySearch(100));
</script>
1 楼 googya 2010-04-26  
这种写法受C C++ Java的影响太大了。

相关推荐

    C++ 二分查找法

    ### C++ 二分查找法详解 在计算机科学领域,数据结构与算法是核心课程之一,其中二分查找法(Binary Search)是一种高效的查找技术,尤其适用于有序数组或列表的搜索场景。本文将深入探讨C++中实现二分查找法的具体...

    MATLAB 二分查找法程序实现 .rar

    二分查找法是一种在有序数组中查找特定元素的高效算法,其基本思想是将查找区间不断缩小至一半,直到找到目标元素或者确定不存在为止。在MATLAB中实现二分查找法,可以极大地提高搜索效率,尤其对于大数据量的处理。...

    用java实现二分查找法BianrySearch

    用java实现二分查找法BianrySearch 用java实现二分查找法BianrySearch 用java实现二分查找法BianrySearch

    二分查找法.docx

    ### 二分查找法知识点详解 #### 一、二分查找法概述 二分查找法是一种在有序数组中查找特定元素的高效算法。其基本原理是通过将目标值与数组中间元素进行比较来缩小搜索范围,从而达到快速查找的目的。由于每次比较...

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

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

    java 二分查找法的实现方法

    二分查找法,又称折半查找法,是计算机科学中一种高效的搜索算法,尤其适用于已排序的数据集合。在Java中,二分查找法通常用于数组或有序列表中,其核心思想是通过不断缩小搜索范围来快速定位目标元素。以下是关于...

    采用二分查找法和顺序查找法查找元素的下标

    本主题主要关注两种常见的查找方法:顺序查找法和二分查找法。这两种方法在不同的场景下各有优势,理解并能熟练运用它们对于优化程序性能至关重要。 首先,我们来讨论顺序查找法。这种方法是最基础的查找策略,适用...

    C例子:二分查找法

    该程序是我写的博客“一起talk C栗子吧(第二十五回:C语言实例-二分查找)”的配套程序,共享给大家使用

    NTC测温中 经典温度查表算法--二分查找法.docx

    二分查找法是一种在有序数组中查找特定元素的搜索算法,其主要优点在于查找速度快。对于长度为1024的表,最多只需要10次比较就能找到目标元素,这在NTC温度表(长度通常在100-500之间)的场景下,可以显著提高查表...

    二分查找法汇总1

    二分查找法是一种高效的数据搜索算法,其时间复杂度为O(log n),在处理大量有序数据时具有显著优势。在算法复杂度分析中,时间复杂度是衡量算法效率的重要指标,按照优劣排序大致为:O(1)、O(log n)、O(n)、O(n log ...

    9.6 二分查找法.rar

    二分查找法是一种在有序数组中寻找特定元素的高效搜索算法。它的基本思想是通过不断地将待搜索区域减半,逐步缩小目标元素的可能位置范围,直到找到目标元素或者确定其不存在为止。在GD32F303这样的单片机上,二分...

    BinarySearch二分查找法c代码

    假设有一个人要我们猜0-99之间的一个数,那么最好的方法就是从0-99的中间数49开始猜。 如果要猜的数小于49,就猜24(0-48的中间数);如果要猜的数大于49,就猜74(50-99的中间数)。...二分查找的工作方法就是如此。

    二分查找法-ppt

    二分查找法 课件 描述了二分查找的前提条件 和基本思想,算法过程

    二分查找法.pptx

    二分查找法,又称折半查找,是一种在有序数组中高效寻找特定元素的搜索算法。它的核心思想是通过不断地将待查找的区间减半来快速定位目标元素。以下是关于二分查找法的详细说明: 1. **使用前提**:二分查找法要求...

    二分查找算法流程图流程图举例

    二分查找法也称为折半查找法,它是在有序数组中进行查找的一种高效方法。这种方法利用了数组有序的特点,通过不断将查找区间对半分割来减少搜索范围,从而显著提高查找效率。二分查找的时间复杂度为O(logn),这使得...

    折半查找法,也称为二分查找法.pdf

    折半查找法,又称二分查找法,是一种在有序数组中高效寻找目标值的算法。其核心思想是利用数组的有序性,通过不断缩小搜索范围,以递归或迭代的方式快速定位目标值。该方法特别适合于大规模数据的查找,因为它的平均...

    数据结构之C++二分查找法

    二分查找法是一种在有序数组中寻找特定元素的搜索算法,具有高效的特点。它通过将查找范围不断减半,直到找到目标元素或者确定其不存在为止。这种方法尤其适用于大型且已经排序的数据集,如电话簿、数据库索引等。在...

    采用2分查找法将PT100电阻值查表算出温度值

    这里我们将讨论如何利用二分查找法,即折半查找法,来实现这一过程。 首先,我们需要理解PT100的基本工作原理。PT100的全称是铂100,意味着当温度为0℃时,它的阻值为100欧姆。随着温度升高,电阻值也会线性增加。...

Global site tag (gtag.js) - Google Analytics