[python] 이진 탐색

전.py / / 2022. 7. 14. 17:06
728x90

# 순차 탐색

def sequential_search(n, target, array):
    for i in range(n):
        if array[i] == target:
            return i + 1
        
inp = input().split()
n = int(inp[0])
target = inp[1]

array = input().split()

print(sequential_search(n, target, array))

 

# 이진 탐색

def binary_search(array, target, start, end):
    if start > end:
        return None
    mid = (start + end) // 2
    
    if array[mid] == target:
        return mid

    elif array[mid] > target:
        return binary_search(array, target, start, mid -1)
    
    else:
        return binary_search(array, target, mid + 1, end)
    
    
n, target = list(map(int, input().split()))
array = list(map(int, input().split()))

result = binary_search(array, target, 0, n-1)
if result == None:
    print("원소가 존재하지 않습니다.")
else:
    print(result + 1)
def binary_search(array, target, start, end):
    while start <= end:
        mid = (start + end) // 2
        
        if array[mid] == target:
            return mid
        
        elif array[mid] > target:
            end = mid - 1
            
        else:
            start = mid + 1
    return None

n, target = list(map(int, input().split()))
array = list(map(int, input().split()))

result = binary_search(array, target, 0, n-1)
if result == None:
    print("원소가 존재하지 않습니다.")
else:
    print(result + 1)

 

 

 

반응형

'전.py' 카테고리의 다른 글

[python] 떡볶이 떡 만들기  (0) 2022.07.21
[python] 부품 찾기  (1) 2022.07.14
[python] 두 배열의 원소 교체  (0) 2022.07.12
[python] 성적이 낮은 순서로 학생 출력하기  (0) 2022.07.12
[python] 위에서 아래로  (0) 2022.07.12
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기