`

用JS实现效率最高的查找-折半查找的改进(可以查到不在数组中的值的位置)

阅读更多

      效率最高的查找方法-折半查找,也叫做二分法查找;可以在最短时间内找到一个数字在一个数组中的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  希望对大家有帮助

0
2
分享到:
评论
1 楼 alice_king 2013-10-20  

相关推荐

    利用折半查找整数m在数组中的位置。

    由N个有序整数组成的数列已放在一维数组中,给定程序MODI1.C中函数fun的功能是:利用折半查找整数m在数组中的位置。若找到,返回其下标值;反之,返回-1。 折半查找的基本算法是:每次查找前先确定数组中待查的范围...

    C语言程序设编写程序在数组中查找一个数要求 ⑴用顺序查找实现 ⑵用折半查找实现。 注:若有该数,则输出该数,否则输出“无此数”。

    折半查找利用了二分的思想,每次将序列分为两半,先判断目标值在哪一半,然后只在那一半中继续查找,直到找到目标值或确定目标值不在序列中。这种方法显著减少了查找次数,尤其在大数据量时优势明显。C语言中的折半...

    折半查找算法的改进和程序实现

    然而,传统的折半查找在某些情况下并不一定是效率最高的方法。通过对查找算法的改进,可以提高查找效率,尤其是在大规模数据中。 在描述中提到的改进方案是将折半查找算法扩展为“段查找算法”,即将查找表分成多个...

    汇编课程设计 实现折半查找

    在本汇编课程设计中,我们关注的主题是“实现折半查找”,这是一项在计算机科学领域内基础且重要的算法技术。折半查找,也称为二分查找,是一种在有序数组中搜索特定元素的有效方法。其基本思想是通过不断将搜索范围...

    顺序查找和折半查找在10个元素中查找20

    在给定的标题“顺序查找和折半查找在10个元素中查找20”中,我们关注的是两种基本的查找算法:顺序查找(Sequential Search)和折半查找(Binary Search)。这些算法在处理有序或无序数据集时各有优势,下面我们将...

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

    本文将详细介绍如何使用JavaScript实现折半查找算法来查找一个字符在有序数组中的位置。折半查找(也称为二分查找)是一种效率较高的查找算法,适用于已排序的数据集合。其基本原理是通过不断将查找区间对半分割,...

    C语言实现顺序表的顺序查找和折半查找

    折半查找是一种高效的查找方法,它可以快速地在一个有序数组中找到目标元素。下面是折半查找的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个数用赋初值的方法在程序

    2.有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。以15个数用赋初值的方法在程序中给出。要找的数用scanf函数输入。

    有序数组的折半查找

    在Visual C++环境中实现折半查找,可以使用C++标准库提供的函数或自定义函数。自定义函数通常涉及递归或循环结构,根据上述步骤编写代码。 **5. 示例代码** 以下是一个简单的C++实现折半查找的示例: ```cpp int ...

    静态查找表。实现有序表的折半查找算法

    通过比较目标值与中间位置的元素值,可以快速缩小查找范围,从而提高查找效率。 ##### 1. 数据结构定义 在给出的代码示例中,我们首先定义了`elemType`结构体类型来表示单个数据项,以及`SSTable`结构体类型来表示...

    折半查找算法及matlab代码实现

    ### 折半查找算法及其MATLAB实现 ...通过不断地将搜索区间减半,可以在较短的时间内定位到目标值的位置。MATLAB实现简单明了,便于理解和应用。对于大规模数据集而言,相比于线性查找,折半查找具有显著的性能优势。

    折半发查询字符的位置

    - **快速查找**:对于大规模数据集,使用折半查找可以极大地提高查找效率。 - **系统和应用程序**:在操作系统和各种应用程序中广泛应用于快速查找特定数据。 总之,折半查找是一种非常高效且实用的查找算法,尤其...

    顺序查找和折半查找

    折半查找,又称二分查找,是一种在有序数组中高效查找的方法。它利用了数组的索引特性,每次将待查找的区间减半,从而大大减少了查找次数。具体步骤如下: 1. 首先,找到数组中间的元素。 2. 如果中间元素等于目标值...

    C语言实现折半查找算法

    折半查找(也称为二分查找)是一种在有序数组中查找特定元素的高效算法。其基本思想是:每次都将搜索区间分为两部分,并根据中间值与目标值的比较结果来缩小搜索范围,直至找到目标值或搜索区间为空为止。 具体步骤...

    折半查找的递归算法

    如果中间元素不是目标值,则根据目标值与中间元素的大小关系进一步缩小查找范围,重复上述过程直到找到目标值或确定目标值不存在于数组中。 具体步骤如下: 1. 计算中间位置的索引:`mid = (low + high) / 2`。 2. ...

    折半查找 c语言函数

    折半查找,又称二分查找,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是通过比较中间元素和目标值,将搜索范围不断缩小为一半,直到找到目标值或者搜索范围为空。这种方法相对于线性查找有显著的效率...

    顺序查找+折半查找

    **折半查找**,又称为二分查找,是一种在有序数组中查找元素的高效算法。它的工作原理是首先找到数组的中间元素,然后将目标值与中间元素进行比较。如果目标值等于中间元素,查找结束;如果目标值小于中间元素,则在...

    C++折半查找代码实现

    ### C++折半查找代码实现知识点详解 ...通过以上分析,我们可以看到折半查找算法的高效性和适用场景,并且了解到如何在C++中实现这一算法。在实际应用中,还需要根据具体情况调整和优化算法以满足不同的需求。

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

    在JavaScript中,利用二分查找可以显著提升查找效率,尤其适用于大数据量的处理。二分查找的基本思想是通过不断缩小查找范围,直到找到目标值或者确定目标值不存在。 有序数组是二分查找的前提条件,这意味着数组中...

Global site tag (gtag.js) - Google Analytics