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

การนำการค้นหาแบบไบนารีไปใช้ใน JavaScript เพื่อส่งคืนดัชนีหากมีหมายเลขที่ค้นหาอยู่


เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลขเป็นอาร์กิวเมนต์แรกและค้นหาหมายเลขเป็นอาร์กิวเมนต์ที่สอง

หากหมายเลขการค้นหามีอยู่ในอาร์เรย์ เราจำเป็นต้องส่งคืนดัชนีในอาร์เรย์ มิฉะนั้น เราจะต้องคืนค่า -1

เราต้องทำสิ่งนี้โดยใช้อัลกอริธึมการค้นหาแบบไบนารี อัลกอริธึมการค้นหาแบบไบนารีโดยพื้นฐานแล้วอัลกอริธึมการแบ่งและพิชิตซึ่งแบบเรียกซ้ำแบ่งอาเรย์ออกเป็นครึ่งหนึ่งจนกว่าจะสนทนากับองค์ประกอบซิงเกิลตัน

การจัดเรียงอาร์เรย์เป็นสิ่งจำเป็นสำหรับอัลกอริธึมการค้นหาแบบไบนารีในกรณีนี้ เนื่องจากทำให้ตัดสินใจว่าจะแบ่งส่วนใดง่ายสำหรับเรา

ตัวอย่าง

const arr = [-3, -1, 4, 7, 9, 11, 14, 22, 26, 28, 36, 45, 67, 78, 88, 99];
const binarySearch = (arr = [], num) => {
   let l = 0;
   let r = arr.length - 1;
   while(l <= r){
      const mid = Math.floor((l + r) / 2); if(num == arr[mid]){
         return mid;
      }
      else if(num < arr[mid]){
         r = mid - 1;
      }
      else{
         l = mid + 1;
      };
   };
   return -1
};
console.log(binarySearch(arr, 22));
console.log(binarySearch(arr, 56));
console.log(binarySearch(arr, 11));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

7
-1
5