[CS50] 검색 알고리즘

KAYA·2021년 11월 23일
0

자료들의 집합을 배열이라고 생각하자.
수 많은 자료 중 원하는 값을 찾기 위해서(=검색) 우리가 고려해야 할 것은 무엇일까? 최고의 효율을 내는 방법은 무엇일까?

우리는 이 방법을 알고리즘이라 표현할 수 있다.
문제에 맞는 최적의 알고리즘을 찾는 것, 그리고 그 방법을 애플리케이션에 최적화시켜 적용하는 것이 개발자가 갖춰야 할 중요한 소양 중 하나이다.


예를 들어보자.
숫자가 무작위로 섞여 있고 그 중 50을 찾아야 한다면?

첫번째, 숫자가 정렬이 되어 있는지 아닌지를 알아야 할 것이다.

만약, 정렬이 되어있지 않다면 첫번째 인덱스부터 순서대로 자료를 확인해야 한다. 어디에 무엇이 있는지 아무런 정보가 없기 때문이다. 이것이 선형 검색이다.

두번째, 만약 정렬이 되어 있다면 어떤 방법을 선택할 것인가?

정렬이 되어있을 경우, 수 많은 경우의 수가 있지만 강의에서 보여준 예로 이진 검색이 있다. 배열 중간 인덱스부터 시작하여 찾고자 하는 값과 비교하며, 그보다 작은(작은 값이 저장되어 있는) 인덱스 또는 큰 (큰 값이 저장되어 있는) 인덱스로 이동을 반복한다.


참조

https://www.boostcourse.org/cs112

profile
겅부하자

0개의 댓글