-
binary search, 빅오표기법알고리즘공부 2018. 4. 4. 19:52
<시간복잡도>
단순탐색 O(n) (선형시간)
이진탐색 O(logn) (로그시간)
<binary_search>
list는 정렬된 배열
# -*- coding: cp949 -*-def binary_search(list, item):low = 0high = len(list)-1while low <= high:mid = (low+high) / 2 #파이썬2에서는 (low+high)가 짝수가 아닐 경우 자동으로 mid 값을 정수로 내림guess = list[mid]if guess == item:return midif guess > item:high = mid - 1else:low = mid + 1return Nonemy_list = [1, 3, 5, 7, 9]print binary_search(my_list, 3) #1print binary_search(my_list, 7) #3print binary_search(my_list, -1) #None<빅오 실행 시간 빠른 것부터 느린 것까지>
알고리즘의 속도는 시간이 아니라 연산 횟수가 어떻게 증가하는지로 측정
O(log n) < O(n) < O(n*log n) < O(n²) < O(n³) < O(2ⁿ) < O(n!)
'알고리즘공부' 카테고리의 다른 글
해시 테이블 (0) 2018.04.11 퀵정렬 (0) 2018.04.05 재귀, 스택 (0) 2018.04.05 배열, 연결리스트, 선택정렬 (0) 2018.04.04 알고리즘 : recursion 1 (0) 2017.10.10