이진 배열 검색

Coaspe·2021년 6월 30일
0

algorithm

목록 보기
3/10
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

    print("배열 데이터를 오름차순으로 입력하세요. ")
    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("검색값을 갖는 원소가 존재하지 않습니다.")
    else :
        print(f'검색값은 x[{idx}]에 있습니다.')
profile
https://github.com/Coaspe

0개의 댓글