Бинарный поиск рекурсивно с использованием Javascript ES6 - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь реализовать бинарный поиск рекурсивно, используя Javascript.

Предположим, что массив отсортирован.

Функция Signature может выглядеть следующим образом:

BinarySearchRecursively (ArrayGiven, x, p, r)

где ArrayGivenмассив, х это число, которое мы ищем.p - начальный индекс, а r - конечный индекс.

Любая ссылка Jsbin / Jsfiddle будет высоко оценена.

1 Ответ

0 голосов
/ 11 февраля 2019

Вот как я это реализовал.С кодом 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)}`);
...