잘못된 출력 바이너리 검색 프로그램

Whizkid95

BinarySearch 프로그램을 작성하면서 프로그램을 작성했습니다.

def binary_search(array, x, low=0, high=None):
    if high is None:
        high = len(array)
    while low < high:
        mid = (low+high)//2
        midval = array[mid]
        if midval < x:
            low = mid+1
        elif midval > x: 
            high = mid
        else:
            return mid
    return -1

다음을 넣을 때 :

binary_search([1,2,2,3],2)

프로그램이 제공하는 출력은 다음과 같습니다.

2

그러나 프로그램이 찾은 첫 번째 정수 'x'의 색인을 출력으로 제공하고 싶습니다. 따라서 이전 예에서는 '2'대신 '1'이됩니다. 이것을 어떻게 바꿀 수 있는지에 대한 아이디어가 있습니까?

ShadowRanger

얼리 아웃 (최종 else조건) 을 제거 하고 이전 elif을 스트레이트로 대체해야합니다 else. 루프가 종료 될 때만 동등성을 테스트하고 발견 된 인덱스를 반환하도록 선택하거나 -1찾을 수없는 경우 :

def binary_search(array, x, low=0, high=None):
    if high is None:
        high = len(array)
    while low < high:
        mid = (low+high)//2
        if array[mid] < x:
            low = mid+1
        else: 
            high = mid
    return -1 if low >= len(array) or array[low] != x else low

그것은 일반적으로, 당신은 루프 당 다중 비교를 수행하지 않기 때문에 이런 식으로 행동하는 것도 좋은 생각이다 ( <그리고 >것 유형에 따라 비용이 수, 각 호출 비교,); 루프 당 정확히 하나의 숫자가 아닌 비교로 단순화하면 시간이 절약됩니다 (종종 더 빠르게 실행됩니다. Python 라이브러리는 종종 <및을 직접 구현 하고 ==래퍼를 사용하여 <측면에서 다른 비교기를 구현하므로 ==속도가 느려집니다).

이것은 실제로 무엇 bisect.bisect_left에서와 순수 파이썬 구현 ; 그렇지 않으면 코드와 거의 동일합니다. log(n)값의 가장 왼쪽 인스턴스를 식별하기 위해 전체 단계를 수행 할 가능성이 더 높기 때문에 시간이 더 오래 걸리지 만 입력에 반복되는 값 많지 않으면 일반적으로 증분 비용이 적습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Python 프로그램이 잘못된 출력을 생성 함

분류에서Dev

프로그램이 잘못된 문자열을 출력 함

분류에서Dev

프로그램이 잘못된 출력을 생성 함

분류에서Dev

최적의 이진 검색 트리 잘못된 출력

분류에서Dev

이진 검색 프로그램이 잘못된 위치를 반환

분류에서Dev

C 프로그램에서 x86 어셈블리 함수를 호출 할 때 잘못된 행렬 값이 검색 됨

분류에서Dev

Fortran 프로그램이 잘못된 출력을 제공합니까?

분류에서Dev

함수에 대한 파이썬 프로그램 잘못된 출력

분류에서Dev

이진 검색에서 잘못된 출력

분류에서Dev

Pthreads 프로그램은 때때로 잘못된 출력과 올바른 출력을 생성합니다.

분류에서Dev

잘못된 출력 : Java를 사용한 이진 검색 트리 구현

분류에서Dev

연결 목록 프로그램으로 잘못된 출력

분류에서Dev

내 프로그램이 잘못된 가장 높은 숫자를 출력하는 이유는 무엇입니까?

분류에서Dev

Sun Sparc 시스템에서 생성 된 Fortran 프로그램의 바이너리 출력 디코딩

분류에서Dev

잘못된 출력을 제공하는 프로그램

분류에서Dev

평균 프로그램 계산시 잘못된 출력

분류에서Dev

투표 프로그램 CPP 도움말 (잘못된 출력)

분류에서Dev

ld 잘못된 경로에서 검색하고 잘못된 라이브러리 검색

분류에서Dev

logkeys 로그 파일에 잘못된 출력이 있습니다.

분류에서Dev

검토를 위해 제출 된 잘못된 Chrome 확장 프로그램-중지하는 방법

분류에서Dev

Javascript로 잘못된 입력시 테두리 색상 변경

분류에서Dev

SQL Server-잘못된 인코딩으로 데이터 검색

분류에서Dev

C 하위 문자열 프로그램을 사용한 이메일 헤더 추출이 잘못된 출력을 제공합니다. 왜?

분류에서Dev

바이너리 파일에서 검색하는 Java 프로그램

분류에서Dev

리디렉션 된 입력 및 출력이있는 MadLib C 프로그램

분류에서Dev

JAVA 개체 배열 프로그램의 잘못된 출력 (초보자)

분류에서Dev

간단한 프로그램의 경우 c에서 잘못된 출력

분류에서Dev

while 루프 내에서 break 문을 사용할 때 Python 프로그램이 잘못된 출력을 제공합니다.

분류에서Dev

프로그램이 내 입력을 잘못 읽음

Related 관련 기사

  1. 1

    Python 프로그램이 잘못된 출력을 생성 함

  2. 2

    프로그램이 잘못된 문자열을 출력 함

  3. 3

    프로그램이 잘못된 출력을 생성 함

  4. 4

    최적의 이진 검색 트리 잘못된 출력

  5. 5

    이진 검색 프로그램이 잘못된 위치를 반환

  6. 6

    C 프로그램에서 x86 어셈블리 함수를 호출 할 때 잘못된 행렬 값이 검색 됨

  7. 7

    Fortran 프로그램이 잘못된 출력을 제공합니까?

  8. 8

    함수에 대한 파이썬 프로그램 잘못된 출력

  9. 9

    이진 검색에서 잘못된 출력

  10. 10

    Pthreads 프로그램은 때때로 잘못된 출력과 올바른 출력을 생성합니다.

  11. 11

    잘못된 출력 : Java를 사용한 이진 검색 트리 구현

  12. 12

    연결 목록 프로그램으로 잘못된 출력

  13. 13

    내 프로그램이 잘못된 가장 높은 숫자를 출력하는 이유는 무엇입니까?

  14. 14

    Sun Sparc 시스템에서 생성 된 Fortran 프로그램의 바이너리 출력 디코딩

  15. 15

    잘못된 출력을 제공하는 프로그램

  16. 16

    평균 프로그램 계산시 잘못된 출력

  17. 17

    투표 프로그램 CPP 도움말 (잘못된 출력)

  18. 18

    ld 잘못된 경로에서 검색하고 잘못된 라이브러리 검색

  19. 19

    logkeys 로그 파일에 잘못된 출력이 있습니다.

  20. 20

    검토를 위해 제출 된 잘못된 Chrome 확장 프로그램-중지하는 방법

  21. 21

    Javascript로 잘못된 입력시 테두리 색상 변경

  22. 22

    SQL Server-잘못된 인코딩으로 데이터 검색

  23. 23

    C 하위 문자열 프로그램을 사용한 이메일 헤더 추출이 잘못된 출력을 제공합니다. 왜?

  24. 24

    바이너리 파일에서 검색하는 Java 프로그램

  25. 25

    리디렉션 된 입력 및 출력이있는 MadLib C 프로그램

  26. 26

    JAVA 개체 배열 프로그램의 잘못된 출력 (초보자)

  27. 27

    간단한 프로그램의 경우 c에서 잘못된 출력

  28. 28

    while 루프 내에서 break 문을 사용할 때 Python 프로그램이 잘못된 출력을 제공합니다.

  29. 29

    프로그램이 내 입력을 잘못 읽음

뜨겁다태그

보관