JavaScript 에서의 이진 탐색

Beginner

This tutorial is from open-source community. Access the source code

소개

이 랩에서는 JavaScript 프로그래밍의 기본 사항을 탐구합니다. 변수, 데이터 타입, 함수, 제어 흐름과 같은 주제를 다룰 것입니다. 랩이 끝나면 JavaScript 구문에 대한 탄탄한 이해를 갖게 되고 이 언어를 사용하여 기본적인 프로그램을 작성할 수 있게 될 것입니다. 이 랩은 프로그래밍 경험이 거의 또는 전혀 없는 초보자를 위해 설계되었지만, JavaScript 에 대한 지식을 새롭게 하고자 하는 사람들에게도 유용할 것입니다.

코딩 연습을 시작하려면 터미널/SSH 를 열고 node를 입력하십시오. 이진 탐색 알고리즘은 정렬된 배열에서 주어진 요소의 인덱스를 찾는 데 사용됩니다. 이진 탐색 알고리즘을 구현하는 단계는 다음과 같습니다.

  1. 왼쪽 및 오른쪽 검색 경계인 lr을 선언하고, 각각 0과 배열의 length로 초기화합니다.
  2. while 루프를 사용하여 Math.floor()를 사용하여 검색 하위 배열을 반으로 나누어 검색 범위를 반복적으로 좁힙니다.
  3. 요소가 발견되면 해당 인덱스를 반환합니다. 그렇지 않으면 -1을 반환합니다.
  4. 이 알고리즘은 배열에 중복된 값을 고려하지 않습니다.

다음은 JavaScript 에서 이진 탐색 알고리즘을 구현한 예입니다.

const binarySearch = (arr, item) => {
  let l = 0,
    r = arr.length - 1;
  while (l <= r) {
    const mid = Math.floor((l + r) / 2);
    const guess = arr[mid];
    if (guess === item) return mid;
    if (guess > item) r = mid - 1;
    else l = mid + 1;
  }
  return -1;
};

다음 예제를 사용하여 binarySearch 함수를 테스트할 수 있습니다.

binarySearch([1, 2, 3, 4, 5], 1); // 0
binarySearch([1, 2, 3, 4, 5], 5); // 4
binarySearch([1, 2, 3, 4, 5], 6); // -1

요약

축하합니다! 이진 탐색 랩을 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 실력을 향상시킬 수 있습니다.