python_이진검색

joseon0thing·2022년 11월 16일
0

python

목록 보기
2/17
post-thumbnail
#정렬0
#중앙값 기준으로 비교 시작함
#pr, pl, pc

from typing import Any, Sequence

def bin_search(a: Sequence, key: Any) -> int:
    pl = 0
    pr = len(a) -1
    
    while True:
        pc = (pl + pr) // 2
        if a[pc] == key:
            return pc
        elif a[pc]  < key:
            pl = pc + 1
        else:
            pr = pc -1
        if pl > pr:
            break
    return -1
    
if __name__ == '__main__':
    num = int(input(' 원소 수: '))
    x = [None] * num
    
    x[0] = int(input('x[0]: '))
    for i in range(1,num):
        while True:
            x[i] = int(input(f'x[{i}]: '))
            if x[i] >= x[i-1]:
                break
    ky = int(input(' 검색 값: '))
    idx = bin_search(x,ky)
    
    if idx==-1:
        print('x')
    else:
        print(f'x[{idx}]')

profile
정리.velog

0개의 댓글