ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน 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