선형 검색
이진 검색
해시법
직선 모양으로 늘어선 배열에서 검색하는 경우에 원하는 키값을 가진 원소를 찾을 때까지
맨 앞부터 스캔하여 순서대로 검색하는 알고리즘
검색 방법
- 첫번째 검색범위 0 ~ n-1, 중앙 인덱스 pc = (n-1)//2
- 중앙값보다 키 값이 크다면 왼쪽은 검색에서 제외,
시작 범위: pc +1로 업데이트, 다시 중앙값 찾아서 반복
- 중앙값보다 작다면 오른쪽은 검색에서 제외,
끝 범위: pc-1로 업데이트, 중앙값 찾아서 반복
- 검색범위가 없거나, 중앙값과 키 값이 일치하면 종료
- 평균 비교 횟수 log n, 검색 실패 경우: log(n+1), 성공할 경우: log n -1
# 바이너리 서치
# data 중에서 target 을 검색하여 index 값을 return 한다.
# 없으면 None을 return한다.
def binary_search(target, data):
data.sort()
start = 0
end = len(data) - 1
while start <= end:
mid = (start + end) // 2
if data[mid] == target:
return mid # 함수를 끝내버린다.
elif data[mid] < target:
start = mid + 1
else:
end = mid -1
return None
[해시법에 대한 자세한 설명 링크]
원소의 값을 원소 개수로 나눈 나머지 = ‘해시값’
해시값을 사용하여 새로운 배열을 만든다 = ‘해시 테이블’
새로 추가할 값을(ex, 35) 원소 개수(ex, 13)로 나눈 나머지(ex, 9)에
해당하는 인덱스(ex, x[9])에 저장