Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm kiếm trong một mảng với tìm kiếm nhị phân sử dụng JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng số đã được sắp xếp (thứ tự tăng dần), arr, làm đối số đầu tiên và một số đích làm đối số thứ hai. Hàm của chúng ta nên tìm kiếm mục tiêu trong mảng arr bằng cách sử dụng thuật toán tìm kiếm nhị phân vì mảng được sắp xếp.

Nếu mục tiêu tồn tại, thì chúng ta nên trả về chỉ mục của nó, nếu không thì chúng ta phải trả về -1.

Ví dụ:nếu đầu vào của hàm là

Đầu vào

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

Đầu ra

const output = 5;

Ví dụ

Sau đây là mã -

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));

Đầu ra

5