Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptを使用したバイナリ検索で配列を検索する


問題

ソートされた数値の配列(昇順)、最初の引数としてarr、2番目の引数としてターゲット番号を受け取るJavaScript関数を作成する必要があります。配列はソートされているため、この関数はバイナリ検索アルゴリズムを使用して配列arr内のターゲットを検索する必要があります。

ターゲットが存在する場合は、そのインデックスを返す必要があります。そうでない場合は、-1を返す必要があります。

たとえば、関数への入力が

入力

const arr = [3, 5, 7, 9, 11, 13, 15, 16, 18, 21, 24, 25, 28];
const target = 13;

出力

const output = 5;

以下はコードです-

const arr = [3, 5, 7, 9, 11, 13, 15, 16, 18, 21, 24, 25, 28];
const target = 13;
const binarySearch = (arr = [], target) => {
   const helper = (low, high) => {
      if (low > high) {
         return -1
      }
      const middle = Math.floor((low + high) / 2)
      if (arr[middle] === target) {
         return middle
      } if (arr[middle] < target) {
         return helper(middle + 1, high)
      }
      return helper(low, middle - 1)
   }
   return helper(0, arr.length - 1)
};
console.log(binarySearch(arr, target));

出力

5

  1. JavaScriptオブジェクトの配列で配列のメソッドを使用していますか?

    以下は、JavaScriptオブジェクトの配列で配列のメソッドを使用するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <styl

  2. JavaScript配列を条件付きで結合しますか?

    以下は、JavaScriptの条件を持つJavaScript配列のコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>