- 선형으로 나열되어 있는 데이터를 순차적으로 스캔하면서 원하는 값을 검색
💡 보초법
: 마지막 인덱스에 찾으려는 값을 추가해서 찾는 과정을 간략화
: 이건 찾은게 아님!!!
nums=[4,7,10,2,4,7,0,2,7,3,9]
searchData = int(input('Input Search Number : '))
searchResultIdx = -1 #'아이템 없음'을 의미할 수 있는 값
nums.append(searchData) # 보초법
n = 0 #인덱스값
while True :
if nums[n] == searchData : #시작은 n=0으로 시작
if n != len(nums) -1 : #len(nums)-1 은 마지막 인덱스 넘버, 마지막 인덱스 넘버는 append로 추가된 것(보초법)이기 때문에 그 조건이 아니라면!
searchResultIdx = n
else :
break
n+=1
print(f'인덱스 값 : {searchResultIdx}')
- 정렬되어 있는 자료 구조에서 중앙값의 크고 작음을 이용해서 검색
- 정렬되어 있지 않다면 자료 정렬부터 해야함(오름차순, 내림차순)
datas=[1,2,3,4,5,6,7,8,9,10,11]
# 인덱스 순서 정의
staIdx = 0
endIdx = len(datas) -1
midIdx = (staIdx + endIdx) // 2
midVal = datas(midIdx)
# 찾으려는 값
searchData = int(input('찾으려는 숫자 입력 : '))
searchResultIdx = -1
# 중앙값과 비교
if searchData > midVal :
staIdx = midIdx
midIdx = (staIdx + endIdx) // 2
midVal = datas[midIdx]
elif searchData < midVal :
endIdx = midIdx
midIdx = (staIdx + endIdx) // 2
midVal = datas[midIdx]
elif searData == mid val :
searchResultIdx = midIdx
break
print(f'searchValue : {searchResultIdx}')