Python의 이진 검색 템플릿

4095 단어 pythonalgorithms

이진 검색이란 무엇입니까?



이진 검색은 매번 검색 간격을 반으로 나누는 검색 알고리즘입니다. 이는 또한 이진 검색의 시간 복잡도가 O(log n)임을 의미합니다.

템플릿



이진 검색은 다음을 수행할 수 있습니다.
  • 정렬된 배열에서 단일 요소 찾기
  • 조건을 충족하는 첫 번째 인덱스 찾기

  • 정렬된 배열에서 단일 요소 찾기




    def binary_search(arr, target):
        left, right = 1, len(arr) - 1
        while left <= right:
            mid = (left + right) // 2
            if arr[mid] < target:
                left = mid + 1
            elif arr[mid] > target:
                right = mid - 1
            else:
                return mid
        return -1
    


    조건을 만족하는 첫 번째 인덱스 찾기



    조건을 만족하는 첫 번째 인덱스를 찾는 것은 참-거짓 배열의 첫 번째 참 값을 찾는 것과 같습니다.
    예: [False, ... False, True, ... True]
    참고 사항:
  • 왼쪽과 오른쪽은 읽기 및 쓰기 공간을 포함해야 합니다
  • .
  • while 루프는 다음의 경우에 중단됩니다. left == right
  • while 루프 후:
  • leftcondition() == True를 만족하는 첫 번째 인덱스입니다.
  • left - 1condition() == False를 만족하는 마지막 인덱스입니다.


  • def condition():
        pass
    
    def binary_search(arr):
        left, right = 1, len(arr)-1
        while left < right:
            mid = (left + right) // 2
            if condition():
                right = mid
            else:
                left = mid + 1
        return left
    

    좋은 웹페이지 즐겨찾기