본문 바로가기
Algorithms/Study

선형 탐색 시간 분석하기: 효율적인 알고리즘의 중요성[파이썬]

by Maccrey Coding 2024. 8. 17.
반응형

 

선형 탐색(Linear Search)은 배열이나 리스트에서 원하는 값을 하나씩 확인하며 탐색하는 알고리즘입니다.

시간 복잡도는 최악의 경우 O(n)으로, 배열의 모든 요소를 탐색해야 할 때 소요되는 시간을 의미합니다.

1. 선형 탐색 시간 분석을 위한 Python 코드

다음은 파이썬으로 선형 탐색 알고리즘을 구현하고, 시간 분석을 하는 코드입니다.

이 코드에서는 배열의 크기를 변경하면서 탐색에 걸리는 시간을 측정해보겠습니다.

import time
import random

# 선형 탐색 함수
def linear_search(arr, target):
    for i in range(len(arr)):
        if arr[i] == target:
            return i
    return -1

# 배열 크기를 변경하며 선형 탐색 시간 측정
def measure_time_linear_search():
    sizes = [1000, 5000, 10000, 50000, 100000]  # 배열 크기
    results = []

    for size in sizes:
        # 랜덤한 배열 생성
        arr = random.sample(range(size * 10), size)
        target = arr[-1]  # 마지막 요소를 찾도록 설정 (최악의 경우)

        # 시간 측정 시작
        start_time = time.time()
        
        # 선형 탐색 실행
        linear_search(arr, target)
        
        # 시간 측정 종료
        end_time = time.time()
        
        # 걸린 시간 계산
        elapsed_time = end_time - start_time
        results.append((size, elapsed_time))

    return results

# 선형 탐색 시간 측정 결과 출력
linear_search_times = measure_time_linear_search()
for size, elapsed_time in linear_search_times:
    print(f"Array Size: {size}, Time Taken: {elapsed_time:.6f} seconds")

2. 코드 설명

  1. linear_search 함수: 배열을 순차적으로 탐색하여 목표 값을 찾습니다. 목표 값이 발견되면 해당 인덱스를 반환하고, 찾지 못하면 -1을 반환합니다.
  2. measure_time_linear_search 함수: 이 함수는 배열의 크기를 변경하면서 선형 탐색에 걸리는 시간을 측정합니다. 크기가 다른 배열에 대해 반복적으로 테스트하고, 걸린 시간을 기록합니다.
  3. 배열 생성 및 타겟 설정: 배열은 랜덤한 숫자로 채워지며, 탐색할 목표 값은 배열의 마지막 요소로 설정됩니다. 이는 선형 탐색에서 최악의 경우를 시뮬레이션하기 위함입니다.
  4. 시간 측정: time.time() 함수를 사용하여 선형 탐색이 시작되기 전과 후의 시간을 기록하고, 걸린 시간을 계산합니다.

3. 예상 결과

 

배열 크기가 커질수록 탐색에 걸리는 시간이 증가할 것입니다. 이 결과는 선형 탐색의 시간 복잡도가 O(n)임을 잘 보여줍니다.

예를 들어, 배열의 크기가 1,000일 때와 100,000일 때 걸리는 시간 차이를 비교하면, 데이터가 커질수록 선형 탐색이 얼마나 비효율적인지 확인할 수 있습니다.

코드를 실행하면 각 배열 크기에 따른 시간이 출력됩니다.

공감과 댓글은 저에게 큰 힘이 됩니다.

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

반응형