JavaScript에서 배열의 요소를 검색하는 또 다른 방법

5079 단어 algorithmsjavascript
이것이 당신에게 유용합니까?

function funnelSearch(arr, target, x = 0) {
  if (!arr.length) return;

  if (arr.length === 1 && arr[0] === target) {
    return target;
  }

  const left = arr[x];
  const right = arr[arr.length - x - 1];

  if (left === target || right === target) {
    return target;
  }

  if (x > (arr.length / 2)) return;

  return funnelSearch(arr, target, x + 1);
}

const numbers = [1,2,3,4,5,6,7,8,10];

console.log(funnelSearch(numbers, 1)); // 1
console.log(funnelSearch(numbers, 5)); // 5
console.log(funnelSearch(numbers, 0)); // undefined
console.log(funnelSearch('Marco Damaceno', 'D')); // D


솔직히 나는 이 기술의 이름을 모른다.

인덱스 0에서 시작하고 마지막 인덱스에서 첫 번째 인덱스를 증가시키고 마지막 인덱스를 감소시킵니다. 그리고 요소를 찾을 때까지 계속됩니다. 찾지 못하면 undefined 를 반환합니다. 인덱스 0에서 시작하여 마지막 인덱스까지 평소보다 모든 요소를 ​​살펴보는 데 절반의 시간이 걸립니다.

웹에서 문서화된 것과 같은 것을 찾지 못했기 때문에 이름을 funnelSearch로 지정했습니다. 검색에 적절한 단어를 사용하지 않았을 수도 있습니다. 바이너리 검색?

이 기술에 알려진 이름이 있으면 알려주세요.

추신: 문자열에서도 작동합니다.

좋은 웹페이지 즐겨찾기