繁体   English   中英

使用Javascript ES6递归进行二进制搜索

[英]Binary Search Recursively using Javascript ES6

我正在尝试使用Javascript递归实现二进制搜索。

假设数组已排序。

函数签名可以如下所示:

BinarySearchRecursively (ArrayGiven, x, p, r)

其中ArrayGiven是一个数组,x是我们要查找的数字。 p是开始索引,r是结束索引。

任何Jsbin / Jsfiddle链接将不胜感激。

这是我的实现方式。 在顶部的注释中实现了psedo代码。

这是js bin: https : //jsbin.com/womenov/3/edit? js,console任何反馈将不胜感激。

/**
 * Binary Search using Recursion
 * p.......q........r : range where p is start, r is end
 * Assume the array is sorted.
 * Procedure BinarySearchRecursively(ArrayGiven, x, p, r, q = 0)
 * if(p > r) return -1
 * q = Math.floor((p+r)/2)
 * if(x === ArrayGiven[q]) return q
 * else if(x > ArrayGiven[q]) set p = q+1
 *    return BinarySearchRecursively(ArrayGiven, x, q + 1, r)
 * else r = q-1 return BinarySearchRecursively(ArrayGiven, x, p, q-1)
 *
 */

function BinarySearchRecursively (ArrayGiven, x, p, r, q = 0) {
        if (p > r) {
            return -1;
        }
        q = Math.floor((p+r)/2);
    if (x === ArrayGiven[q]) {
        return q;
    }
    if (x > ArrayGiven[q]) {
        return BinarySearchRecursively(ArrayGiven, x,q+1, r);
    }
    return BinarySearchRecursively(ArrayGiven, x, p,q-1);
}

const TestArray = [2, 6, 8, 9, 11, 15];
console.log(`Given Element is at position : ${BinarySearchRecursively(TestArray, 2, 0,5)}`);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM