데이터분석 4주차-1

이정훈·2023년 2월 22일
0

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}')

profile
데이터 분석 준비생

0개의 댓글