제로베이스/알고리즘

Algorithms. 선형 검색

진주네카라 2021. 11. 5. 01:45
728x90

 

Information

순차 검색 알고리즘(sequential search algorithm), 또는 선형 검색 알고리즘(linear search algorithm)은 리스트에서 특정한 값을 찾는 알고리즘의 하나다. 이것은 리스트에서 찾고자 하는 값을 맨 앞에서부터 끝까지 차례대로 찾아 나가는 것이다. 검색할 리스트의 길이가 길면 비효율적이지만, 검색 방법 중 가장 단순하여 구현이 쉽고 정렬되지 않은 리스트에서도 사용할 수 있다는 장점이 있다.

 

 


선형 검색

  • 순차 검색 
  • 선형으로 나열되어 있는 데이터를 순차적으로 검색하여 원하는 값을 찾음
  • 검색 성공 또는 검색 실패

 

 

 

구현

 

1

nums = [0, 4, 2, 1, 8, 5, 7, 3, 9, 6]


def sequentialSearch(arr, key):
    n = 0
    answer = 0
    while True:
        if n == len(arr):
            answer = -1  # 검색 실패로 종료를 나타냄
            break

        elif arr[n] == key:
            answer = n
            break

        n += 1
    return answer

print(sequentialSearch(nums, 7)) # 출력 인덱스 6

 

2

nums = [0, 4, 2, 1, 8, 5, 7, 3, 9, 6]


def sequential(array, value):
    for i in range(len(array)):
        if array[i] == value:
            return i
    return False	# 검색 실패하면 False 출력

print(sequential(nums,6)) # 출력 인덱스 9

 

 

 

 

보초법

  • Sentinel method
  • Sentinel Linear Search
    • 마지막 인덱스에 찾으려는 값을 추가해 보초 값으로 사용하여 찾는 횟수를 간략화 한다.
    • 마지막 인덱스 이전에 검색되면 성공
    • 마지막 인덱스가 검색되면 실패

 

 

 

구현

 

def sentinelSearch(arr, key):

    arr.append(key)
    n = 0
    answer = 0

    while True:
        if arr[n] == key:
            if n != len(arr) - 1:
                answer = n
                break
            else:
                answer = -1   # n이 마지막 인덱스면 검색 실패
                break
        n += 1
    return answer

print(sentinelSearch(nums, 11))	# 출력 -1

 


예시

2021.11.09 - [스터디(zero-base)/알고리즘] - Algorithms. 선형 검색 예시

 

Algorithms. 선형 검색 예시

Sentinel Linear Search 보초법을 사용한 선형 검색을 적용해 보았다. 예시 1 리스트에서 가장 앞에 있는 특정 숫자 검색하고 위치(인덱스) 출력하기 def sentinelSearch(arr, key): arr.append(key) n = 0 answ..

yeonipp.tistory.com

 

 

도움

https://www.geeksforgeeks.org/sentinel-linear-search/

 

728x90

'제로베이스 > 알고리즘' 카테고리의 다른 글

Algorithms. 순위  (0) 2021.11.29
Algorithms. 이진 검색 예시  (0) 2021.11.12
Algorithms. 이진 검색  (0) 2021.11.10
Algorithms. 선형 검색 예시  (0) 2021.11.09
Algorithms. DFS(Depth First Search) 알고리즘  (0) 2021.11.02