저장되어 있는 자료 중에서 원하는 항목을 찾는 작업
목적하는 탐색 키를 가진 항목을 찾는 것
- 탐색 키 : 자료를 구별하여 인식할 수 있는 키
검색의 종류
일렬로 되어 있는 자료를 순서대로 검색하는 방법
2가지 경우
검색과정
def sequential_seracth(a, n, key):
i = 0
while i <n and a[i] != key:
i = i + 1
if i < n : return i
else : return -1
원소의 순서에 따라 비교회수가 결정됨def seqentialSerach(a, n, key):
i = 0
while i < n and a[i] < key:
i = i+1
if i<n and a[i] == key:
return i
else:
return -1
자료의 가운데에 있는 항목의 키 값과 비교하여 다음 검색의 위치를 결정하고 검색을 계속 진행하는 방법
이진 검색을 하기 위해서는 자료가 정렬된 상태여야 한다.
검색과정
구현
Ex)
def binarySerach(a, N, key):
start = 0
end = N - 1
while start <= end:
middle = (start + end) // 2
if a[middle] == key: # 검색 성공
return True
elif a[middle] > key:
end = middle - 1
else :
start = middle + 1
return false # 검색 실패
def bianrySearch2(a, low, high, key):
if low > high:
return False
else :
middle == (low + high) // 2
if key == a[middle]:
return True
elif key < a[middle]:
return bianrySearch2(a, low, middle-1, key)
elif a[middle] < key:
return bianrySearch2(a, low, middle-1, key)
주어진 자료들 중 가장 작은 값의 원소부터 차례대로 선택하여 위치를 교환하는 방식
정렬과정
시간 복잡도 : O(n2)
Ex)
def selectionSort(a, N):
for i in range(N-1):
minIndex = i
for j in range(i+1, N):
if a[minIndex] > a[j]:
minIndex = j
a[i], a[minIndex] = a[minIndex], a[i]
저장되어 있는 자료로부터 k 번째로 큰 혹은 작은 원소를 찾는 방법을 설렉션 알고리즘이라고 한다.
Ex) k번째로 작은 원소를 찾는 알고리즘
def select(arr, k):
for i in range(0,k):
minIndex = i
for j in range(i+1, len(arr)):
if arr[minIndex] > arr[j]:
minIndex = j
arr[i], arr[minIndex] = arr[minIndex], arr[i]
return arr[k-1]