ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 이진탐색(Binary search) - 파이썬, 알고리즘
    카테고리 없음 2019. 2. 8. 19:04

    이진 탐색 알고리즘은 오름차순으로 정렬된 리스트에서 특정한 값의 위치를 찾는 알고리즘이다. 처음 중간의 값을 임의의 값으로 선택하여, 그 값과 찾고자 하는 값의 크고 작음을 비교하는 방식을 채택하고 있다. 처음 선택한 중앙값이 만약 찾는값보다 크면 그 값은 새로운 최댓값이 되며, 작은 그 값은 새로운 최솟값이 된다. 검색 원리상 정렬된 리스트에만 사용할 수 있다는 단점이 있지만, 검색이 반복될 때마다 목표값을 찾을 확률은 두배가 되므로 속도가 빠르다는 장점이 있다. 



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    def binary_search(target, data):
        data.sort()
        start = 0
        end = len(data) - 1
        while start <= end:
            mid = (start + end) // 2
     
            if data[mid] == target:
                return mid
            elif data[mid] < target:
                start = mid + 1
            else:
                end = mid - 1
        
        return None
    cs


Designed by Tistory.