[알고리즘] 001_검색

Soo·2023년 8월 23일
0
post-thumbnail

✏️ 선형 검색

  • 선형으로 나열되어 있는 데이터를 순차적으로 스캔하면서 원하는 값을 검색

💡 보초법
: 마지막 인덱스에 찾으려는 값을 추가해서 찾는 과정을 간략화
: 이건 찾은게 아님!!!

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}')
profile
데린이인데요 ໒꒰ྀ ˶ • ༝ •˶ ꒱ྀིა (잘못 된 부분은 너그러이 알려주세요.)

0개의 댓글

관련 채용 정보