01 선형 검색
보초법
datas = [3,2,5,7,9,1,0,8,6,4]
print(f'datas: {datas}')
print(f'datas length: {len(datas)}')
searchData = int(input('찾으려는 숫자 입력 :'))
searchResultIdx = -1
n = 0
while True:
if n == len(datas):
searchResultIdx = -1
break
elif datas[n] == searchData:
searchResultIdx = n
break
n += 1
print(f'searchResultIdx : {searchResultIdx}')
02 이진검색
가운데의 데이터를 이용한다.
데이터가 정렬 되어있다는 가정하에 중앙값과 크고작음을 이용하여 데이터를 검색한다.
datas = [1,2,3,4,5,6,7,8,9,10,11]
print(f'datas : {datas}')
print(f'datas length : {len(datas)}')
searchData = int(input('search data : '))
searchResultIdx = -1
staIdx = 0
endIdx =len(datas) -1
midIdx = (staIdx + endIdx) //2
midVal = datas[midIdx]
while searchData <= datas[len(datas)-1] and searchData >= datas[0]:
if searchData == datas[len(datas)-1]:
searchResultIdx = len(datas) -1
break
if searchData > midVal:
staIdx = midIdx
midIdx = (staIdx + endIdx) // 2
midVal = datas[midIdx]
print(f'midIdx : {midIdx}')
print(f'midVal : {midVal}')
elif searchData < midVal:
endIdx = midIdx
midIdx = (staIdx + endIdx) // 2
midVal = datas[midIdx]
print(f'midIdx : {midIdx}')
print(f'midVal : {midVal}')
elif searchData == midVal:
searchResultIdx = midIdx
break
print(f'searchResultIdx : {searchResultIdx}')
03 순위
순서를 정하자
수의 크고 작음을 이용해서 수의 순서를 정하는 것을 순위라고 한다.
import random
nums = random.sample(range(50,101),20)
ranks =[0 for i in range(20)]
print(f'nums : {nums}')
print(f'ranks : {ranks}')
for idx , num1 in enumerate(nums):
for num2 in nums:
if num1 < num2:
ranks[idx] += 1
print(f'nums : {nums}')
print(f'ranks : {ranks}')
for idx , num in enumerate(nums):
print(f'num: {num} \t rank:{ranks[idx]+1}')