상세 컨텐츠

본문 제목

[Python 자료구조] 이진검색 코드 개선

자료구조

by donggyu1998 2022. 2. 6. 17:09

본문

반응형

💡 이진 검색 코드 개선

이전 게시글 : [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 를 반환한다.

 

반응형

관련글 더보기