>⛹️♀️ 제로베이스 데이터취업스쿨 15기 스터디노트 13(5.19.)
🗂️ 오늘(5.19.) 수강한 분량
알고리즘 1~3
🗂️ 알고리즘 1~3 핵심 내용 정리
- 선형검색 : 선형으로 나열되어 있는 데이터를 순차적으로 스캔하여 원하는 값 찾기
- 보초법: 마지막 인덱스에 찾으려는 값을 찾는 과정 → 찾는 과정이 간략화 됨
ex) 인덱스 0~10까지 순차 검색 / 검색 성공 : 마지막 이전에 9가 검색된 경우, 검색 실패 : 마지막에 9가 검색된 경우
searchResultIdx = -1 #존재하지 않은 인덱스인 -1을 주고 시작 n = 0 while True: if nums[n] == searchData: if n != len(nums) -1: searchResultIdx = n break n += 1 # 무한반복 방지
- 이진검색 : 정렬 되어있는 구조에서 중앙값과의 크고 작음을 이용하여 데이터 검색
#초기값 설정 staIdx = 0 endIdx = len(nums) -1 #마지막 인덱스 midIdx = (staIdx + endIdx) // 2 #중앙값 찾기(혹시 모르니 몫으로만 계산) midVal = nums[midIdx] #중앙값 while searchData <= nums[lens(nums) -1] and \ searchData >= nums[0] #조건 if searchData == nums[len(nums) -1] ~ break if serchData> midVal: staIdx = midIdx midIdx = (staIdx + endIdx)// 2 #새로운 중앙값
- 순위 : 수의 순서를 정하는 것(크고 작음 이용)
- 계산 값이 많을 땐 모듈을 이용하여 순위 모듈 만들기
- 모듈은 class ~ :, def init(self,a,c): 사용
-__init__(): 기존 데이터의 초기화, 첫인수로 반드시 self용, 그후 인수 지정
- 버블정렬 : 처음부터 끝까지 인접하는 인덱스의 값을 순차비교하면서 큰 숫자를 가장 끝으로 옮김
for i in range(length): print(i) for j in range(length - i)
- 삽입정렬 : 정렬되어 있는 자료 배열과 비교하여 정렬 위치 찾기
while nums[i2] > cNum and i2>= 0 # 0앞은 비교 불가함으로
- 선택정렬 : 주어진 리스트 중에서 최솟값을 착고 그 값을 맨 앞에 위차한 값과 교체
- 모듈은 class ~ :, def init(self,a,asc=True): 사용
sn = sm.SortNumber(nums) #객체 생성 sn.setSort() #오름차순 sortedNumbers = sn.getSortedNumbers() print(f'sortedNumbers by asc : {sortedNumbers}') sn.setSort(False) #내림차순
- 최대값 : 자료구조에서 가장 큰 값
- class : def init(self,a): 사용
class MaxAlforithm: def __init__(self,ns): def getMaxNum(self): self.maxNum = sulf.numss[0] for n in self.maxNums < n: slef.maxNum = n result self.maxNum
ord(): 아스키코드 변환함수
👩🚀 스터디 감정 노트
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ알고리즘 들어가자마자 정신없이 휘몰아치는 무언가...ㅋㅋ하면서 웃음만 나온다
파이썬 기초 돌릴려고 코드업 파이썬 100문 챌린지 시작! 배운거랑 좀 다른것들도 있어서 잘 비교해가면서 확인해야지 🤯
[이미지 출처 : 미리캔버스]