그냥 코딩테스트 문제를 무작정 풀지 않고
어떤 알고리즘을 사용해야 하고 어떤 알고리즘들이 있는지
에 대해 공부 하고싶어서 정리 겸 글을 씁니다.
알고리즘은 파이썬으로 합니다.
대부분의 공부는
✨"동빛나"✨
님의 유튜브나 블로그를 보고 공부합니다.
(동빈나 님인 것을 알고있습니다ㅎ)
정렬 알고리즘
정렬 알고리즘은 말그대로 데이터를 정렬하는 알고리즘 입니다.
기초적인 알고리즘으로
효율성의 차이를 쉽게 볼 수 있습니다.
어떤 알고리즘인지 확인하고 적용하는 것 까지 해보겠습니다.
선택 정렬
데이터들을 살펴보고 가장 작은 것을 앞으로 보내는 알고리즘 입니다.
예를들어
[2,7,4,6,8,10,5,1,3,9]
이 같은 데이터들이 있습니다.
반목문을 통해
처음에는 전체데이터중 가장 작은 수를 찾아 앞으로 보냅니다.
[1,2,7,4,6,8,10,5,3,9]
그 다음 맨 앞에는 가장 작은 수가 들어갔으니 내버려두고
두번째 부터 끝까지 비교해서 보냅니다.
[1,2,7,4,6,8,10,5,3,9]
이번엔 전과 같네요.
다음의 차례에도 세번째 부터 확인하여
[1,2,3,7,4,6,8,10,5,9]
이런 식으로 반복합니다.
코드를 보겠습니다.
data = [2,7,4,6,8,10,5,1,3,9]
for i in range(len(data)):
min=999
for j in range(i,len(data)):
if(min>data[j]):
min=data[j]
index=j
temp=data[i]
data[i]=data[index]
data[index]=temp
print(data)
간단한 코드라 보기 쉽죠?
선택 정렬의
Big O notation은
O(N^2)로 굉장히 오래걸리고 비효율적입니다.
오늘은 여기까지!
태클은 매우매우 환영입니다.
아직 많이 부족하고 서툴러서 지적받고싶습니다.
'알고리즘' 카테고리의 다른 글
[알고리즘/계수정렬(Counting Sort)] - 자바 (0) | 2021.07.19 |
---|---|
[알고리즘/병합정렬(Merge Sort)] -자바 (0) | 2021.07.12 |
알고리즘의 시작 정렬 알고리즘(sort Algorithm) 4. 퀵 정렬 (0) | 2021.06.04 |
알고리즘의 시작 정렬 알고리즘(sort Algorithm) 3. 삽입 정렬 (0) | 2021.05.09 |
알고리즘의 시작 정렬 알고리즘(sort Algorithm) 2. 버블 정렬 (0) | 2021.05.08 |