선형 및 이진 검색 알고리즘 설명

선형 및 이진 검색 알고리즘 설명

일부 데이터를 검색하는 기능은 컴퓨터 과학의 중요한 측면입니다. 검색 알고리즘은 데이터 세트에서 특정 항목을 찾는 데 사용됩니다.





알고리즘은 검색 쿼리에 부울 결과(true 또는 false)를 반환합니다. 찾은 값의 상대적 위치를 제공하도록 수정할 수도 있습니다.





이 기사에서 알고리즘은 값이 존재하는지 여부를 결정하는 데 집중합니다.





선형 검색 알고리즘

선형 검색은 순차 검색이라고도 합니다. 이 검색 유형에서는 목록의 각 값을 순서대로 하나씩 방문하면서 원하는 값이 있는지 확인합니다.

알고리즘은 찾고 있는 값을 찾거나 검색할 값이 다 떨어질 때까지 값별로 값을 확인합니다. 검색할 값이 부족하면 검색 쿼리가 목록에 없다는 의미입니다.



순차 검색 알고리즘은 값 목록과 목록에서 원하는 항목을 매개변수로 사용합니다. 반환 결과는 다음과 같이 초기화됩니다. 거짓 로 변경됩니다 진실 원하는 값을 찾았을 때.

예제로 아래의 Python 구현을 참조하십시오.





def linearSearch(mylist, item):
found = False
index = 0
while index if mylist[index] == item:
found = True
else:
index = index+1
return found

알고리즘 분석

가장 좋은 시나리오는 원하는 항목이 목록의 첫 번째 항목일 때 발생합니다. 최악의 경우는 원하는 항목이 목록의 마지막(n번째 항목)일 때 발생합니다. 따라서 선형 탐색의 시간 복잡도는 O(n)입니다.

위 알고리즘의 평균 케이스 시나리오는 n/2입니다.





관련된: Big-O 표기법이란 무엇입니까?

사용된 알고리즘은 임의의 항목 목록이 제공된다고 가정한다는 것을 아는 것이 중요합니다. 즉, 목록 항목은 특정 순서가 없습니다.

Fitbit 반대로 시간을 설정하는 방법

항목이 특정 순서, 예를 들어 가장 작은 것부터 큰 것까지라고 가정합니다. 계산에서 약간의 이점을 얻을 수 있습니다.

주어진 목록에서 19를 찾는 예를 들어 보십시오: [2, 5, 6, 11, 15, 18, 23, 27, 34]. 23에 도달하면 찾고 있는 항목이 목록에 없다는 것이 분명해집니다. 따라서 나머지 목록 항목을 계속 검색하는 것이 더 이상 중요하지 않습니다.

이진 검색 알고리즘

정렬된 목록이 필요한 계산을 줄이는 방법을 보았습니다. 이진 검색 알고리즘은 정렬된 목록이 도입되는 이러한 효율성을 훨씬 더 활용합니다.

알고리즘은 순서가 지정된 목록의 중간 값을 가져와 원하는 값인지 확인하는 것으로 시작합니다. 그렇지 않은 경우 값이 원하는 값보다 작거나 큰지 확인합니다.

이보다 적으면 목록의 아래쪽 절반을 확인할 필요가 없습니다. 그렇지 않고 더 크면 목록의 위쪽 절반으로 이동합니다.

관련: 재귀란 무엇이며 어떻게 사용합니까?

선택된 하위 목록(왼쪽 또는 오른쪽)에 관계없이 중간 값이 다시 결정됩니다. 값이 필요한 값인지 다시 확인합니다. 그렇지 않은 경우 요청된 값보다 작거나 큰지 확인합니다.

Word Mac에서 페이지를 재정렬하는 방법

값이 있는 경우 값을 찾을 때까지 이 프로세스가 반복됩니다.

아래의 Python 구현은 이진 검색 알고리즘을 위한 것입니다.

def binarySearch(mylist, 항목):

low = 0
high = len(mylist) - 1
found = False
while low <= high and not found: mid = (low + high) // 2
if mylist[mid] == item:found = True
elif item else:low = mid + 1
return found

알고리즘 분석

최상의 시나리오는 원하는 항목이 중간 항목인 것으로 확인될 때 발생합니다. 최악의 시나리오는 그렇게 간단하지 않습니다. 아래 분석을 따르십시오.

첫 번째 비교 후 n/2개의 항목이 남습니다. 두 번째 이후에는 n/4개의 항목이 남습니다. 세 번째 이후에는 n/8.

항목의 수가 n/2i에 도달할 때까지 계속 반감한다는 점에 유의하십시오. 여기서 i는 비교 횟수입니다. 모든 분할 후에는 1개의 항목만 남게 됩니다.

이것은 다음을 의미합니다.

n/2i=1 따라서 이진 탐색은 O(log n)입니다.

정렬로 이동

이진 검색에서는 주어진 배열이 이미 주문된 경우를 고려했습니다. 그러나 순서가 지정되지 않은 데이터 세트가 있고 이에 대해 이진 검색을 수행하려고 한다고 가정합니다. 어떻게 하시겠습니까?

대답은 간단합니다. 정렬하십시오. 컴퓨터 과학에는 잘 연구된 정렬 기술이 많이 있습니다. 학습을 시작할 수 있는 이러한 기술 중 하나는 선택 정렬 알고리즘이며 다른 영역과 관련된 가이드도 많이 있습니다.

공유하다 공유하다 트위터 이메일 선택 정렬을 사용하는 방법

선택 정렬은 초보자가 이해하기 약간 까다롭지만 일단 스윙을 익히면 그리 어렵지 않습니다.

다음 읽기
관련 항목
  • 프로그램 작성
  • 기술 설명
  • 프로그램 작성
  • 알고리즘
  • 데이터 분석
저자 소개 제롬 데이비슨(22개 기사 게재)

Jerome은 MakeUseOf의 스태프 라이터입니다. 그는 프로그래밍 및 Linux에 대한 기사를 다룹니다. 그는 또한 암호화폐 애호가이며 항상 암호화폐 산업을 주시하고 있습니다.

제롬 데이비슨이 참여한 작품 더보기

뉴스레터 구독

뉴스레터에 가입하여 기술 팁, 리뷰, 무료 전자책 및 독점 거래를 확인하십시오!

구독하려면 여기를 클릭하세요.