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

Tìm kiếm truy vấn bằng tìm kiếm nhị phân trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng các ký tự được sắp xếp làm đối số đầu tiên và một ký tự truy vấn là đối số thứ hai. Sau đó, hàm của chúng ta nên sử dụng thuật toán BinarySearch để tìm xem truy vấn có tồn tại trong mảng hay không.

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

Ví dụ

Mã cho điều này sẽ là -

const arr = [1, 2, 3, 5, 6, 7, 10, 11, 14, 15, 17, 19, 20, 22, 23];
const binarySearch = (arr, query) => {
   let index = Math.floor(arr.length / 2);
   if (arr[index] === query){
      return index;
   }else if (arr.length === 1){
      return null;
   }else if (arr[index] < query) {
      arr = arr.slice(index + 1);
      let res = binarySearch(arr, query);
      if (res === null){
         return -1;
      }else {
         return index + 1 + res;
      };
   }else {
      let arr1 = arr.slice(0, index);
      return binarySearch(arr1, query);
   };
};
console.log(binarySearch(arr, 1));
console.log(binarySearch(arr, 7));
console.log(binarySearch(arr, 11));
console.log(binarySearch(arr, 12));
console.log(binarySearch(arr, 22));

Đầu ra

Đầu ra trong bảng điều khiển -

0
5
7
-1
13