Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ค้นหาในอาร์เรย์ด้วยการค้นหาไบนารีโดยใช้ JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลขที่เรียงลำดับ (การเพิ่มขึ้น) arr เป็นอาร์กิวเมนต์แรก และหมายเลขเป้าหมายเป็นอาร์กิวเมนต์ที่สอง ฟังก์ชันของเราควรค้นหาเป้าหมายในอาร์เรย์ 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