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

วิธีใดดีที่สุดในการค้นหารายการในรายการที่เรียงลำดับใน JavaScript


เท่าที่มีการจัดเรียงอาร์เรย์ (ไม่ว่าจะเรียงลำดับอย่างไร) การค้นหาแบบไบนารีเป็นอัลกอริธึมการค้นหาที่ปรับให้เหมาะสมที่สุดและมีประสิทธิภาพมากที่สุด เราจำเป็นต้องเขียนฟังก์ชันการค้นหาแบบไบนารีที่ค้นหาอาร์เรย์ที่เรียงลำดับของตัวอักษรสำหรับเป้าหมาย

จากนั้นเราควรแนบฟังก์ชันนั้นกับคุณสมบัติต้นแบบของ Array Objects

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

const arr = [2, 5, 8, 12, 14, 16, 17, 22, 26, 28, 35, 67, 78, 99];
const target = 22;
Array.prototype.binarySearch = function(target) {
   if ( !this.length ) { return false; }
   if ( this[0] === target ) { return true; }
   var i, mid,
      start = 0,
      end = this.length,
      c = false;
   while ( c = (i = this[mid = start+((end-start)>>1)]) !== target ) {
      i < target ? (start = mid) : (end = mid);
      if (start >= end - 1) { break; }
   }
   return !c;
};
console.log(arr.binarySearch(target));

ผลลัพธ์

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

true