`

JS二分查找(预排序数组的查找)

阅读更多

js二分查找数据,数据首先要经过排序。

二分查找可以解决(预排序数组的查找)问题:只要数组中包含value(即要查找的值),
 那么通过不断缩小包含value的范围,最终就可以找到它,找不到返回-1。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" dir="ltr">
	<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
		<script type="text/javascript">
			
//Copyright 2009 Nicholas C. Zakas. All rights reserved. 
//MIT-Licensed, see source file 
function binarySearch(items, value){ 
    var startIndex  = 0;
    stopIndex = items.length - 1;
    middle = (stopIndex + startIndex)>>>1;
    while(items[middle] != value && startIndex < stopIndex){ 
  
        //adjust search area(调整查找范围) 
        if (value < items[middle]){ 
            stopIndex = middle - 1; 
        } else if (value > items[middle]){ 
            startIndex = middle + 1; 
        } 
  
        //recalculate middle(重新计算中项索引) 
	 middle = (stopIndex + startIndex)>>>1;
    } 
  
    //make sure it's the right value(确保返回正确的值) 
    return (items[middle] != value) ? -1 : middle; 
} 

function test(){
	var arr = [0,1,2,3,4,5,6,7,8,9,10,11,12];
	var rv=binarySearch(arr,5);
	alert(rv);
}
		</script>
	</head>
	<body>
		<a href="javascript:test();">search</a>
	</body>
</html>

 

分享到:
评论

相关推荐

    JS实现二分查找查找有序数组中的数字

    二分查找,也称为折半查找,是一种在有序数组中高效寻找特定元素的搜索算法。在JavaScript中,利用二分查找可以显著提升查找效率,尤其适用于大数据量的处理。二分查找的基本思想是通过不断缩小查找范围,直到找到...

    JavaScript使用二分查找算法在数组中查找数据的方法

    二分查找算法是一种高效的查找算法,适用于在有序数组中快速定位特定元素。二分查找也被称为折半查找,它的核心思想是每次将查找区间减半,逐步缩小查找范围,从而迅速找到目标值或者确定其不存在。 在JavaScript中...

    JS实现二分插入排序,前端必会

    - 对于每个元素,使用二分查找找到它在已排序数组中的合适位置。 - 使用二分查找时,我们不断将已排序数组分为两半,直到找到目标位置或者确定目标位置应该在哪一半。 - 找到位置后,将元素插入已排序数组,可能...

    js代码-二维数组中的查找

    总结一下,JavaScript中的二维数组查找涉及到基础的线性查找以及在特定情况下适用的二分查找。理解并熟练运用这些查找方法对于编写高效的数据处理程序至关重要。同时,阅读和分析`main.js`和`README.txt`文件将有助...

    sortedarrayfunctions使用一些低层的功能来维护和搜索排序数组

    首先,排序数组的核心优势在于,它们支持二分查找(binary search),这是一种在已排序数组中查找特定元素的快速算法。二分查找的时间复杂度为O(log n),远优于线性查找。在`sorted-array-functions`库中,很可能...

    javascript 折半查找字符在数组中的位置(有序列表).docx

    折半查找(也称为二分查找)是一种效率较高的查找算法,适用于已排序的数据集合。其基本原理是通过不断将查找区间对半分割,逐步缩小目标值所在范围,直至找到目标值或确定目标值不存在于原数组中。 #### 折半查找...

    05-二分查找.md

    以下是使用JavaScript语言实现的二分查找递归版本和迭代版本的示例代码: ```javascript // 递归版本 function binarySearchRecursive(arr, target, left, right) { if (left &gt; right) { return -1; } const ...

    基于二分查找的有序表在做topK算法的给力实现

    "基于二分查找的有序表在做topK算法的给力实现" 这个标题揭示了我们将在JavaScript开发中探讨一种高效的算法实现,即如何利用有序表(通常是一个排序数组)和二分查找来执行topK算法。TopK算法的主要目标是从大量...

    JavaScript实现二分查找实例代码

    - 无序数组的二分查找,结合快速排序,其时间复杂度取决于排序的时间复杂度(快速排序平均为O(n log n),最坏情况下为O(n^2)),然后再加上O(log n)的二分查找,总的时间复杂度一般会高于O(n log n)。 总结来说,...

    javascript实现二分查找法实现代码

    1. 需要有序数组:javascript实现二分查找法需要一个有序的数组,这可能需要额外的排序操作。 2. 搜索范围越大,效率越高:javascript实现二分查找法的搜索效率与搜索范围的大小有关,当搜索范围越大时,javascript...

    JavaScript实现获取两个排序数组的中位数算法示例

    我们可以采用二分查找的方法来解决这个问题。 以下是一种高效的解决方案: 1. 初始化两个指针,分别指向nums1和nums2的起始位置,即`i = 0`和`j = 0`。 2. 遍历两个数组,每次比较nums1[i]和nums2[j]的大小,选择...

    D3.js的基础部分之数组的处理数组的排序和求值(v3版本)

    10. `d3.bisectLeft(array, value)` 和 `d3.bisect(array, value)`:分别返回`value`在已排序数组`array`中左侧和右侧的位置,用于二分查找。 这些求值函数极大地简化了数据预处理,特别是在进行可视化时需要计算...

    js实现的二分查找算法实例

    JavaScript(简称js)是一种广泛使用的高级编程语言,它可以通过数组等数据结构实现二分查找算法。在本篇文章中,将详细介绍如何用js实现二分查找算法,并通过一个具体的实例来说明其运算原理与实现步骤。 首先,...

    js基本算法:冒泡排序,二分查找的简单实例

    本文主要介绍了JavaScript中两种基础但非常重要的算法:冒泡排序和二分查找。这两种算法是计算机科学中解决问题的基础工具,对于理解和优化代码性能至关重要。 首先,我们来看冒泡排序。冒泡排序是一种简单的排序...

    算法实践(JavaScript & Java),排序,查找、树、两指针、动态规划等

    在JavaScript和Java中,二分查找通常应用于有序数组,而哈希查找则利用了散列表的特性,可以实现近乎常数时间的查找效率。 4. **树结构**: 树是数据结构的基础,包括二叉树、平衡二叉树(AVL、红黑树)、B树、B+...

    算法实践JS实现排序查找树两指针动态规划等

    二分查找在有序数组中非常有效,而哈希表则提供了近乎常数时间的查找速度。理解这些查找算法有助于在实际问题中选择合适的解决方案。 **树数据结构**: 树是一种非线性的数据结构,由节点(包含数据)和边(表示...

    javascript 折半查找字符在数组中的位置(有序列表)

    在给出的JavaScript代码示例中,我们实现了一个二分查找函数,该函数可以在一个有序的字符串数组中查找给定字符的位置。如果找到了,函数返回该字符在数组中的索引位置,否则返回-1。下面是代码实现的详细分析: 1....

Global site tag (gtag.js) - Google Analytics