效率最高的查找方法-折半查找,也叫做二分法查找;可以在最短时间内找到一个数字在一个数组中的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语言程序设计-查找算法:读懂、掌握顺序查找、折半查找算法 编写程序在数组中查找一个数。要求: ⑴用顺序查找实现; ⑵用折半查找实现。 注:若有该数,则输出该数,否则输出“无此数”。
数据结构习题---折半查找代码 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函数输入。
javascript 折半查找字符在数组中的位置(有序列表).docx
6.查找-折半查找+插入.cpp
会变课程设计 任意输入待比较的一组数据,排序,之后再输入需要查找的数,运行即可实现折半查找,界面友好
第三部:输入一个数,在后在排好序的数中进行折半查找,判断该数的位置 实现代码如下: 方法一: 选择排序法+循环折半查找法 代码如下:#include<iostream>using namespace std;int main(){ int a[15]; int n,i; ...
在该程序中,实现了在10个元素中查找20,用了顺序查找方法和折半查找方法。
查找问题(顺序查找法, 折半查找法,)基本思想:一列数放在数组a(1)---a(n)中,待查找的数放在x 中,把x与a数组中的元素从头到尾一一进行比较查找。用变量p表示a数组元素下标,p初值为1,使x与a(p)比较,如果x不等于a...
主要为大家详细介绍了C语言实现顺序表的顺序查找和折半查找,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)
静态查找表。实现有序表的折半查找算法 静态查找表。实现有序表的折半查找算法 静态查找表。实现有序表的折半查找算法静态查找表。实现有序表的折半查找算法
使用折半查找,输入一个整数,查找是否在数组中,如在给出下标,否则-1
代码如下:/** * 折半查找字符在数组中的位置(有序列表) * @param array 被检索的数组 * @param x 要查找的字符 * @type int * @returns 字符在数组中的位置,没找到返回-1 */ function binarySearch(array,x){ var ...
折半查找(C语言版的)从键盘输入上述8个整数5 ,14 ,18 ,21 ,23 ,29 ,31 ,35,存放在数组bub[8]中,并输出其值。 (2)从键盘输入21,查找是否存在该数据元素,若存在,则输出该数据元素在表中的位置,否则给出查找...
折半查找c语言函数, 在数组总查找 例子
用C语言实现折半查找,折半查找算法较简单
Visual C++,有序数组的折半查找,和顺序查找法相比,其速度更快。
有15个数按小由到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数在数组中的下标