💡 이진 검색 코드 개선
이전 게시글 : [Python 자료구조] 이진검색 :: 코딩 연구소 (tistory.com)
# 기존 코드
if arr[mid] == element:
ret = mid
return ret
elif arr[mid] > element:
last = mid - 1
elif arr[mid] < element:
first = mid + 1
#1 수정 방법
if arr[mid] == element:
ret = mid
return ret
elif arr[mid] > element:
last = mid - 1
else:
first = mid + 1
#2 수정 방법
if arr[mid] > element:
last = mid - 1
elif arr[mid] < element:
first = mid + 1
else:
ret = mid
return ret
1번 코드에서는 3개의 조건이 있다.
첫 번째로 arr[mid] 가 element 와 값이 같은 경우, 두 번째로 arr[mid] 가 element 보다 값이 큰 경우
세 번째로 arr[mid] 가 element 보다 값이 작은 경우
2번 코드에서는 2개의 조건이 있다.
첫 번째로 arr[mid] 가 element 와 값이 같은 경우, 두 번째로 arr[mid] 가 element 보다 값이 큰 경우
위 두 조건이 성립되지 않으면 mid 값에 + 1을 한다.
3번 코드에서는 2개의 조건이 있지만, 2번 코드에서 else 의 결과를 [ mid+1 ] 로 하는 경우 처음 보는 사람들은 어떤 경우인지 이해하기 힘들기 때문에 제일 좋은 코드는 3번 코드라고 생각된다.
3번 코드인 경우 arr[mid] 가 element 보다 큰 경우 [ mid-1 ], arr[mid] 가 element 보다 작은 경우 [ mid+1 ], 두 조건이 아닌 경우 ret 변수를 통해 mid 값을 받고 ret 를 반환한다.
[Python 자료구조] 입력 제한 없는 큐 (simplequeue) - 1 (0) | 2022.02.06 |
---|---|
[Python 자료구조] 큐 (Queue) (0) | 2022.02.06 |
[Python 자료구조] 스택 (Stack) (0) | 2022.02.06 |
[Python 자료구조] 이진검색 (0) | 2022.02.04 |
[Python 자료구조] 선형검색 (코드 개선) (0) | 2022.02.04 |