코딩 초보자를 위한 알고리즘 설명과 예제: 이진 검색

개요

이진 검색은 정렬된 리스트에서 찾고자 하는 값을 찾는 방법으로 빠르고 효율적인 검색 알고리즘이다. 기본 원리는 중간 인덱스를 정하고, 찾고자 하는 값과 비교해서 값이 더 작을 경우 왼쪽 리스트를, 반대로 더 큰 값일 경우 오른쪽 리스트만을 대상으로 다시 이진 검색을 수행하는 방식이다. 이진 검색은 많은 자료 중에 한 값을 찾기에 적합하며, 반복되는 과정을 거쳐 최종 검색에 걸리는 시간이 빠르다.

 

코딩 초보자를 위한 알고리즘 설명과 예제: 이진 검색
-짜장파이
(위 사진은 내용과 무관함 Pexels 제공 사진)

 

중점내용

1. 이진 검색의 개념

이진 검색(Binary Search)은 정렬된 배열 내부의 특정 값을 찾기 위해 사용되는 알고리즘이다. 이진 검색은 반으로 나누어 각 그룹에서 시작하여 그룹 내 가장 중간 값을 비교하여 그 값이 찾고자 하는 값보다 작거나 큰지를 판단하여 점차적으로 검색 범위를 줄여가는 방식으로 작동한다. 이렇게 검색을 반복하면 탐색하고자 하는 값을 찾을 수 있다. 이진 검색의 시간 복잡도는 O(log n)이다.

 

2. 이진 검색의 주요 개념

이진 검색은 정렬된 배열 내에서 원하는 값을 탐색하는데 사용하는 알고리즘이다. 이 알고리즘은 입력 배열을 절반씩 나눌 때마다 값을 비교하여 최소의 시간 내에 원하는 값을 찾는다. 그러므로 이진 검색은 배열이 커질수록 탐색의 효율이 높아진다. 가장 중요한 개념은 배열이 정렬되어 있어야 한다는 것이다. 배열이 정렬되지 않으면 이진 검색을 사용할 수 없으므로 이 점을 참고해서 사용하는 것이 좋다.

 

3. 이진 검색의 절차

이진 검색은 정렬된 배열에서 특정한 값을 찾기 위한 방법으로 자주 사용됩니다. 이진 검색의 절차는 다음과 같습니다.

1. 정렬된 배열의 중간 값을 찾습니다.

2. 검색하고자 하는 값과 중간 값을 비교합니다.

3. 검색하고자 하는 값이 중간 값보다 크면 중간 값을 기준으로 오른쪽 배열을 검색합니다. 반대로 작으면 왼쪽 배열을 검색합니다.

4. 찾는 값이 중간 값과 같다면 검색이 종료됩니다.

5. 찾고자 하는 값이 없다면 검색은 종료됩니다.

예를 들어 다음 배열에서 8을 찾으려고 한다고 가정합시다.

[2, 4, 6, 8, 10, 12, 14, 16, 18]

1. 중간 값인 10을 찾습니다.

2. 8과 10을 비교합니다. 8이 작으므로 왼쪽 배열[2, 4, 6, 8]을 검색합니다.

3. 다시 중간 값인 6을 찾습니다.

4. 8과 6을 비교합니다. 8이 크므로 오른쪽 배열[8, 10]을 검색합니다.

5. 다시 중간 값인 8을 찾습니다.

6. 8과 8을 비교합니다. 값이 같으므로 검색이 종료됩니다.

 

4. 이진 검색의 장점

이진 검색은 다른 검색 알고리즘보다 훨씬 더 효율적인 장점이 있다. 가장 큰 장점은 빠른 속도로 데이터를 검색할 수 있다는 것이다. 이진 검색은 데이터를 이분하게 나누어 비교하는 방식으로 작동하므로, 전체 데이터를 한번에 비교하지 않고도 목표한 데이터를 검색할 수 있기 때문이다. 또한, 데이터를 정렬하는 것도 데이터를 검색하는 데 도움이 되기 때문에 이진 검색을 사용할 때 데이터를 정렬해줘야 한다. 검색 속도가 빠르기 때문에 데이터를 검색하는 데 있어서 매우 유용하다.

 

5. 이진 검색 예제 코드

이진 검색의 예제 코드는 다음과 같습니다. 이진 검색은 배열 내의 정렬된 데이터를 사용합니다. 배열의 가운데 값과 찾고자 하는 값과 비교하여 더 큰 값인지 더 작은 값인지를 결정합니다. 그리고 각 단계마다 배열의 가운데를 다시 찾게 됩니다.

function binarySearch(arr, target) {

let start = 0;

let end = arr.length – 1;

let mid;

while (start

mid = Math.floor((start + end) / 2);

if (arr[mid] === target) {

return mid;

} else if (arr[mid]

start = mid + 1;

} else {

end = mid – 1;

}

}

return -1;

}

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];

let target = 5;

console.log(binarySearch(arr, target)); // 4

 

코딩 초보자를 위한 알고리즘 설명과 예제: 이진 검색
2-짜장파이
(위 사진은 내용과 무관함 Pexels 제공 사진)

 

마침말

이진 검색은 정렬된 데이터를 빠르게 찾아내기 위해 사용하는 알고리즘입니다. 이 알고리즘을 사용하면 탐색이 빠르게 이루어질 수 있고, 빅오 표기법을 사용해 복잡도를 쉽게 이해할 수 있습니다. 또한, 이진 검색을 사용하면 코드를 간결하게 작성할 수 있으며, 실행 시간을 효율적으로 사용할 수 있습니다. 이진 검색은 코딩 초보자에게도 손쉽게 이해할 수 있는 매우 유용한 기법입니다.

함께 보면 좋은 영상

[자료구조 알고리즘] 이진검색트리를 만드는 모든 배열 찾기

[자료구조 알고리즘] 이진검색트리를 만드는 모든 배열 찾기

개인회생대출

개인회생자대출

개인회생중대출

개인회생인가대출

회생대출

개인회생소액대출

개인회생면책후대출

개인회생인가후대출