binarySearch (이진탐색) 구현
코드
#이진탐색
data = [2, 11, 19, 27, 30, 31, 45, 121]
n = int(input('검색할 데이터를 입력하세요: '))
l = 0 #검색할 데이터 리스트의 첫번째 인덱스
h = len(data)-1 #검색할 데이터 리스트의 마지막 인덱스
count = 0 #검색 비교 횟수
isFlag = False #데이터 검색의 성공 여부
while(l <= h):
m = (l+h) // 2 # 중간 위치를 계산
if n in data:
if n == data[m]: #검색비교완료
isFlag = True
break
elif n > data[m]:
l = m + 1
elif n < data[m]:
h = m - 1
#count 위치 유의
count += 1 # 비교횟수를 증가
print("{} 번 비교했습니다".format(count))
if isFlag:
print("검색 완료!, 입력된 데이터 {}의 인덱스는 {} 입니다.".format(n, m))
else:
print("검색 실패, 입력된 데이터 {}는 리스트에 존재하지 않습니다.")
실행결과
검색할 데이터를 입력하세요: 30
2 번 비교했습니다
검색 완료!, 입력된 데이터 30의 인덱스는 4 입니다.
count 의 위치에 따라 비교횟수가 달라지는 점 유의
while 문 끝에 비교 한 회차를 완료했을 때, count의 횟수 증가
'Python > Python Algorithm' 카테고리의 다른 글
[python](알고리즘) quickSort 퀵정렬(랜덤 피봇) 구현 (0) | 2021.10.06 |
---|---|
[python](알고리즘) mergeSort 병합정렬(합병정렬) 구현 (0) | 2021.10.01 |
[python] factorial 함수, 재귀함수 구현 (0) | 2021.08.27 |
[python](자료구조) Queue class 구현 (0) | 2021.08.25 |
[python](자료구조) stack class 구현 (0) | 2021.08.25 |