效率最高的查找方法-折半查找,也叫做二分法查找;可以在最短时间内找到一个数字在一个数组中的index定位,但有些时候我们需要实现一个不在数组中的值“将”位于已有数组中的第几位的场景,下面是我用JS实现的代码,对于折半查找的原理请百度或者google一下,当然360也是可以的。
// 计算index
var _myIndex = function(list, key) {
var low = 0;
var high = list.length - 1;
var mid;
var result = 0;
// 只有一个数字
if (low == high) {
if (list[0] > key) {
return 2;
} else {
return 1;
}
}
while (low <= high) {
mid = parseInt((low + high) / 2);
if (list[mid] > key) {
low = mid + 1;
if (low > high) {
result = mid + 1;
break;
}
;
} else if (list[mid] < key) {
high = mid - 1;
if (low > high) {
result = mid;
break;
}
;
} else {
result = mid;
break;
}
;
}
;// 循环结束
// 返回index
return result;
};
可以使用测试数组测一下:
var list = [1,3,5,7,9];
var key = 8;
有问题可以给我留言 更欢迎大家提BUG 希望对大家有帮助
分享到:
相关推荐
由N个有序整数组成的数列已放在一维数组中,给定程序MODI1.C中函数fun的功能是:利用折半查找整数m在数组中的位置。若找到,返回其下标值;反之,返回-1。 折半查找的基本算法是:每次查找前先确定数组中待查的范围...
折半查找利用了二分的思想,每次将序列分为两半,先判断目标值在哪一半,然后只在那一半中继续查找,直到找到目标值或确定目标值不在序列中。这种方法显著减少了查找次数,尤其在大数据量时优势明显。C语言中的折半...
然而,传统的折半查找在某些情况下并不一定是效率最高的方法。通过对查找算法的改进,可以提高查找效率,尤其是在大规模数据中。 在描述中提到的改进方案是将折半查找算法扩展为“段查找算法”,即将查找表分成多个...
在本汇编课程设计中,我们关注的主题是“实现折半查找”,这是一项在计算机科学领域内基础且重要的算法技术。折半查找,也称为二分查找,是一种在有序数组中搜索特定元素的有效方法。其基本思想是通过不断将搜索范围...
在给定的标题“顺序查找和折半查找在10个元素中查找20”中,我们关注的是两种基本的查找算法:顺序查找(Sequential Search)和折半查找(Binary Search)。这些算法在处理有序或无序数据集时各有优势,下面我们将...
本文将详细介绍如何使用JavaScript实现折半查找算法来查找一个字符在有序数组中的位置。折半查找(也称为二分查找)是一种效率较高的查找算法,适用于已排序的数据集合。其基本原理是通过不断将查找区间对半分割,...
折半查找是一种高效的查找方法,它可以快速地在一个有序数组中找到目标元素。下面是折半查找的C语言实现代码: ```c int BinSearch1(int r[], int n, int k) { // 非递归 int low = 1, high = n; // 设置查找区间 ...
数据结构习题---折半查找代码 void BinInsert(int A[],int &n,int item) { int j,low=1,high=n,mid; while(low) { /* 利用折半查找法查找合适位置*/ mid=(low+high)/2; /* 计算当前查找部分的中间位置*/ if...
2.有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。以15个数用赋初值的方法在程序中给出。要找的数用scanf函数输入。
在Visual C++环境中实现折半查找,可以使用C++标准库提供的函数或自定义函数。自定义函数通常涉及递归或循环结构,根据上述步骤编写代码。 **5. 示例代码** 以下是一个简单的C++实现折半查找的示例: ```cpp int ...
通过比较目标值与中间位置的元素值,可以快速缩小查找范围,从而提高查找效率。 ##### 1. 数据结构定义 在给出的代码示例中,我们首先定义了`elemType`结构体类型来表示单个数据项,以及`SSTable`结构体类型来表示...
### 折半查找算法及其MATLAB实现 ...通过不断地将搜索区间减半,可以在较短的时间内定位到目标值的位置。MATLAB实现简单明了,便于理解和应用。对于大规模数据集而言,相比于线性查找,折半查找具有显著的性能优势。
- **快速查找**:对于大规模数据集,使用折半查找可以极大地提高查找效率。 - **系统和应用程序**:在操作系统和各种应用程序中广泛应用于快速查找特定数据。 总之,折半查找是一种非常高效且实用的查找算法,尤其...
折半查找,又称二分查找,是一种在有序数组中高效查找的方法。它利用了数组的索引特性,每次将待查找的区间减半,从而大大减少了查找次数。具体步骤如下: 1. 首先,找到数组中间的元素。 2. 如果中间元素等于目标值...
折半查找(也称为二分查找)是一种在有序数组中查找特定元素的高效算法。其基本思想是:每次都将搜索区间分为两部分,并根据中间值与目标值的比较结果来缩小搜索范围,直至找到目标值或搜索区间为空为止。 具体步骤...
如果中间元素不是目标值,则根据目标值与中间元素的大小关系进一步缩小查找范围,重复上述过程直到找到目标值或确定目标值不存在于数组中。 具体步骤如下: 1. 计算中间位置的索引:`mid = (low + high) / 2`。 2. ...
折半查找,又称二分查找,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是通过比较中间元素和目标值,将搜索范围不断缩小为一半,直到找到目标值或者搜索范围为空。这种方法相对于线性查找有显著的效率...
**折半查找**,又称为二分查找,是一种在有序数组中查找元素的高效算法。它的工作原理是首先找到数组的中间元素,然后将目标值与中间元素进行比较。如果目标值等于中间元素,查找结束;如果目标值小于中间元素,则在...
### C++折半查找代码实现知识点详解 ...通过以上分析,我们可以看到折半查找算法的高效性和适用场景,并且了解到如何在C++中实现这一算法。在实际应用中,还需要根据具体情况调整和优化算法以满足不同的需求。
在JavaScript中,利用二分查找可以显著提升查找效率,尤其适用于大数据量的处理。二分查找的基本思想是通过不断缩小查找范围,直到找到目标值或者确定目标值不存在。 有序数组是二分查找的前提条件,这意味着数组中...