본문 바로가기
Python notes/Others

파이썬 예제코드) binary search 방법으로 검색 알고리즘 만들기

by 성실한 나무 2021. 3. 25.

#1. 문제 해결

 1) 오름차순으로 된 리스트 만들기

 2) 찾으려는 숫자를 입력받을 변수 만들기

 3) True or False 담을 변수 만들기

 4) 첫번째와 마지막 인덱스 변수, 가운데 변수, 회전 수 설정하기 (0, N-1, mid, circle)

 5) while 반복문으로 첫번째 인덱스가 마지막 변수와 같아질 때까지 반복하도록 조건 설정

 6) 반복할 때마다 회전수 증가

 7) 가운데 인덱스 변수에는 첫번째 인덱스 변수와 마지막 인덱스 변수의 평균을 넣음

 8) 가운데 인덱스가 search값과 같으면 True이고 해당 값을 index 변수에 넣음, 서치 완료했으므로 break로 끝내기 

 9) 가운데 인덱스가 search값보다 크면 마지막 인덱스를 다시 설정해줌 -> 가운데 인덱스-1

 10) 가운데 인덱스가 search값보다 작으면 첫번째 인덱스를 다시 설정해줌 -> 가운데 인덱스+1

 11) 결과 값 프린트

 

#2. 코드 짜기

#binary search 방법으로 검색 알고리즘 만들기
numbers=list(range(1,12))
N=len(numbers)
search=int(input("찾으려는 숫자를 입력하세요:"))
TorF=False
f_index=0
l_index=N-1
mid=0
circle=0
while f_index<=l_index:
  circle+=1
  mid=int((f_index+l_index)/2)
  if numbers[mid]==search:
    TorF=True; index=mid; break;
  if numbers[mid]>search:
    l_index=mid-1
  else:
    f_index=mid+1
if TorF:
  print(f"찾으려는 값은 {search}이고, 해당 값은 {index}번 인덱스에 있습니다")
  print(f"해당 값은 {circle}회전만에 찾았습니다")
else:
  print(f"찾으려는 값 {search}를 찾지 못했습니다")

 

#3. 실행

댓글