더북(TheBook)

icon_errorfix 연습 문제

 

12-1 다음 과정을 참고하여 재귀 호출을 사용한 이분 탐색 알고리즘을 만들어 보세요.

① 주어진 탐색 대상이 비어 있다면 탐색할 필요가 없습니다(종료 조건).

② 찾는 값과 주어진 탐색 대상의 중간 위치 값을 비교합니다.

③ 찾는 값과 중간 위치 값이 같다면 결괏값으로 중간 위치 값을 돌려줍니다.

④ 찾는 값이 중간 위치 값보다 크다면 중간 위치의 오른쪽을 대상으로 이분 탐색 함수를 재귀 호출합니다.

⑤ 찾는 값이 중간 위치 값보다 작다면 중간 위치의 왼쪽을 대상으로 이분 탐색 함수를 재귀 호출합니다.

 

icon_wait

 

계산 복잡도 비교

앞에서 살펴본 계산 복잡도를 표현하는 대문자 O 표기법을 계산이 간단한 것에서 복잡한 것 순으로 정리해 보겠습니다.

① O(1): 입력 크기 n과 계산 복잡도가 무관할 때

예) 계산 공식 n(n + 1) / 2를 이용한 1부터 n까지의 합(문제 1)

② O(logn): 입력 크기 n의 로그 값에 비례하여 계산 복잡도가 증가할 때

예) 이분 탐색(문제 12)

③ O(n): 입력 크기 n에 비례하여 계산 복잡도가 증가할 때

예) 최댓값 찾기(문제 2), 순차 탐색(문제 7)

④ O(n·logn): 입력 크기 n과 로그 n 값의 곱에 비례하여 계산 복잡도가 증가할 때

예) 병합 정렬(문제 10), 퀵 정렬(문제 11)

⑤ O(n2): 입력 크기 n의 제곱에 비례하여 계산 복잡도가 증가할 때

예) 선택 정렬(문제 8), 삽입 정렬(문제 9)

⑥ O(2n): 입력 크기가 n일 때 2의 n 제곱 값에 비례하여 계산 복잡도가 증가할 때

예) 하노이의 탑(문제 6)

 

O(1)

O(logn)

O(n)

O(n·logn)

O(n2)

O(2n)

그래프

n = 10

1

3.3

10

32.2

100

1024

n = 100

1

6.6

100

664.4

10000

1267650…

(31자리 숫자)

n = 10000

1

13.3

10000

132877.1

100000000

1995063…

(3011자리 숫자)

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.