#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. 실행
'Python notes > Others' 카테고리의 다른 글
파이썬 예제코드) 최빈값 알고리즘 만들기 (+인덱스 값을 사용) (0) | 2021.03.25 |
---|---|
파이썬 예제코드) 정수 리스트 2개를 병합하기 (+Merge algorithm) (0) | 2021.03.25 |
파이썬 예제코드) 오름차순, 내림차순으로 리스트 내 숫자 재배열하기 (0) | 2021.03.23 |
파이썬 예제코드) string 원소로 된 리스트를 정수 원소로 변환하기 (+split, map, list함수) (0) | 2021.03.23 |
파이썬 예제코드) 랜덤리스트 내에서 최대값과 최소값 구하기 (1) | 2021.03.23 |
댓글