[Python] 선형 탐색(Linear Search) 이진 탐색 (Binary Search)

2024. 12. 7. 14:48·BackEnd/Python
반응형

 

선형 탐색 (Linear Search)

 

 

선형 탐색은 배열 또는 리스트의 처음부터 끝까지 차례대로 요소를 비교하여 원하는 값을 찾는 방법입니다.

시간 복잡도는 O(n)입니다.

 

선형 탐색은 정렬되지 않은 데이터나 작은 데이터 셋에 간단히 적용 가능합니다.

 

예시 코드

 

def linear_search(arr, target):
    for i in range(len(arr)):
        if arr[i] == target:
            return i  # 찾은 경우 인덱스 반환
    return -1  # 찾지 못한 경우 -1 반환

# 사용 예제
arr = [4, 2, 7, 1, 9, 3]
target = 7
result = linear_search(arr, target)

 


 

이진 탐색 (Binary Search)

 

이진 탐색은 정렬된 배열에서 중간 값을 기준으로 검색 범위를 줄여가며 탐색하는 방식입니다.

이진 탐색 시간 복잡도는 O(log n)입니다.

 

이진 탐색은 데이터가 정렬되어 있을 때 적용 가능합니다.

데이터가 정렬되어 있지 않을 때는 정렬과 탐색의 복잡도를 고려하여 선택합니다.

 

예시 코드

 

def binary_search(arr, target):
    left, right = 0, len(arr) - 1

    while left <= right:
        mid = (left + right) // 2

        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            left = mid + 1
        else:
            right = mid - 1

    return -1  # 찾지 못한 경우 -1 반환

# 사용 예제
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
target = 7
result = binary_search(arr, target)

if result != -1:
    print(f"Element found at index {result}")
else:
    print("Element not found in the array")

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'BackEnd > Python' 카테고리의 다른 글

[Python] 깊이 우선 탐색(DFS)와 너비 우선 탐색(BFS)  (0) 2024.12.06
[Python] 해시 테이블 (Hash Table)  (0) 2024.12.02
[Python] 우선순위 큐와 힙 (Priority Queue & Heap)  (0) 2024.12.02
[Python] 스택, 큐, 데크  (0) 2024.11.27
[Python] 한 번에 여러 개 입력(input) 받기  (0) 2024.11.15
'BackEnd/Python' 카테고리의 다른 글
  • [Python] 깊이 우선 탐색(DFS)와 너비 우선 탐색(BFS)
  • [Python] 해시 테이블 (Hash Table)
  • [Python] 우선순위 큐와 힙 (Priority Queue & Heap)
  • [Python] 스택, 큐, 데크
Dev Chu
Dev Chu
  • Dev Chu
    Log_Double 7
    Dev Chu
  • 전체
    오늘
    어제
    • LOG LIST (201)
      • log Double 7 (2)
        • notice (1)
        • 회고록 (1)
      • Study (112)
        • 과제 (2)
        • 코딩 테스트 (105)
        • 대규모 시스템 설계 기초 (5)
      • CS (10)
        • 자료구조 & 알고리즘 (4)
        • Design Pattern (2)
        • TIL (4)
      • FrontEnd (26)
        • HTML & CSS (16)
        • JavaScript & jQuery (9)
        • React (1)
      • BackEnd (24)
        • Java (4)
        • Python (6)
        • Database (0)
        • Spring (6)
      • Infra & DevOps (3)
        • AWS (3)
        • Git (8)
      • Project (4)
        • repo_bis (2)
        • WhiteMonday (2)
      • ETC (20)
        • TIP (13)
        • Error (5)
        • SQLD (2)
  • 블로그 메뉴

    • 코딩 테스트
  • 링크

    • GitHub
  • 공지사항

    • Log Double 7
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Dev Chu
[Python] 선형 탐색(Linear Search) 이진 탐색 (Binary Search)
상단으로

티스토리툴바