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