`

用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  

相关推荐

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

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

    大前端中的二分算法.docx

    二分查找,也称为折半查找,是一种在有序数组中高效寻找特定元素的搜索算法。在大前端领域,虽然主要工作集中在用户界面和交互上,但随着技术的不断发展,对前端开发者的算法基础要求也在逐渐提高。二分查找是前端...

    数据结构课程设计 航班检索程序

    - 记事本作为数据库:在资源有限或者简单应用场景下,记事本可以作为简单的文本文件存储数据,但其查询效率低,不适合大数据量操作。 - 文件格式:可能采用CSV(逗号分隔值)或JSON(JavaScript对象表示法)格式...

    js代码-二分查找法

    二分查找法,又称折半查找,是一种在有序数组中搜索特定元素的高效算法。它通过不断缩小搜索范围,将查找的时间复杂度降低到O(log n)。在JavaScript中实现二分查找法,可以帮助我们快速定位数据,尤其适用于大数据量...

    PHP工程师试题.docx

    `@import`是CSS语法,只能在CSS内部使用,且需放在样式表文件的顶部,不支持浏览器缓存,但能实现CSS的按需加载。 3. PHP中的`serialize()`和`unserialize()`函数用于序列化和反序列化变量,使得变量能够在非PHP...

    JavaScript中的排序算法代码

    例如,有序表的折半查找,相较于无序表,其查找效率更高。在构建数据结构如二叉排序树、B-树和B+树时,排序也是一个不可或缺的过程。 在排序算法中,排序依据的数据项被称作“排序码”或“关键码”。关键码的重要性...

Global site tag (gtag.js) - Google Analytics