알고리즘
어떠한 문제를 해결하기 위한 일련의 절차나 방법
선형 검색
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('{}의 위치 : {}' .format(searchData, searchResultIdx))
이진 검색 : 가운데 데이터(중앙값) 이용. 검색 범위를 좁혀나가면서 원하는 값을 찾음
※ 정렬이 되어있는 상태라 가정함
순위
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('-' * 30 + '정렬 후 순위' + '-' * 30 )
print(f'nums : {nums}')
print(f'ranks : {ranks}')
for idx, num in enumerate(nums):
print(f'nums : {num} \t rank : {ranks[idx] + 1}')
삽입 정렬 : 정렬되어 있는 자료 배열과 비교해서, 정렬 위치를 찾는다.
선택 정렬 : 자료를 정렬하는 알고리즘. 주어진 리스트 중에 최솟값을 찾아 그 값을 맨 앞에 위치한 값과 교체하는 방식
최댓값 : 자료구조에서 가장 큰 값을 찾는다
ord() : 문자를 ASCII Code 값으로 반환
class MaxAlgorithm:
def __init__(self, ns):
self.nums = ns
self.maxNum = 0
def getMaxNum(self):
self.maxNum = self.nums[0]
for n in self.nums:
if self.maxNum < n:
self.maxNum = n
return self.maxNum
ma = MaxAlgorithm([-2, -4, 5, 7, 10, 0, 8, 20, -11])
maxNum = ma.getMaxNum()
print(f'MaxNum : {maxNum}')
class MinAlgorithm:
def __init__(self, ns):
self.nums = ns
self.minNum = 0
def getMinNum(self):
self.minNum = self.nums[0]
for n in self.nums:
if self.minNum > n:
self.minNum = n
return self.minNum
ma = MinAlgorithm([-2, -4, 5, 7, 10, 0, 8, 20, -11])
minNum = ma.getMinNum()
print(f'MinNum : {minNum}')
class MaxAlgorithm:
def __init__(self, ns):
self.nums = ns
self.maxNum = 0
self.maxNumIdx = 0
def setMaxIdxAndNum(self):
self.maxNum = self.nums[0]
self.maxNumIdx = 0
for i, n in enumerate(self.nums):
if self.maxNum < n:
self.maxNum = n
self.maxNumIdx = i
def getMaxNum(self):
return self.maxNum
def getMaxNumIdx(self):
return self.maxNumIdx
import random
nums = random.sample(range(0, 50), 20)
print(f'nums: {nums}')
inputNums = int(input('input Number: '))
print(f'inputNum : {inputNums}')
nearNum = 0 ; minNum = 50
for n in nums:
absNum = abs(n - inputNums)
# print(f'absNum : {absNum}')
if absNum < minNum:
minNum = absNum
nearNum = n
print(f'nearNum : {nearNum}')
import random
nums = random.sample(range(0, 100), 10)
print(f'nums : {nums}')
total = 0
for n in nums:
total += n
average = total / len(nums)
print(f'average : {average}')