Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript의 정렬된 목록에서 항목을 검색하는 가장 좋은 방법은 무엇입니까?


정렬된 배열에 관한 한(순서에 상관없이) 이진 검색은 현존하는 가장 최적화되고 효율적인 검색 알고리즘입니다. 대상에 대해 정렬된 리터럴 배열을 검색하는 이진 검색 기능을 작성해야 합니다.

그런 다음 해당 함수를 Array Objects의 prototype 속성에 연결해야 합니다.

예시

이에 대한 코드는 -

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