본문 바로가기

알고리즘

알고리즘 시작 정렬 알고리즘(sort Algorithm) 1. 선택 정렬

 

 

 

그냥 코딩테스트 문제를 무작정 풀지 않고

어떤 알고리즘을 사용해야 하고 어떤 알고리즘들이 있는지

에 대해 공부 하고싶어서 정리 겸 글을 씁니다.

 

알고리즘은 파이썬으로 합니다.

 

대부분의 공부는

✨"동빛나"

님의 유튜브나 블로그를 보고 공부합니다.

(동빈나 님인 것을 알고있습니다ㅎ)

 

정렬 알고리즘


정렬 알고리즘은 말그대로 데이터를 정렬하는 알고리즘 입니다.

기초적인 알고리즘으로

효율성의 차이를 쉽게 볼 수 있습니다.

어떤 알고리즘인지 확인하고 적용하는 것 까지 해보겠습니다.

 

선택 정렬


데이터들을 살펴보고 가장 작은 것을 앞으로 보내는 알고리즘 입니다.

예를들어

 

[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)로 굉장히 오래걸리고 비효율적입니다.

 

오늘은 여기까지!

태클은 매우매우 환영입니다.

아직 많이 부족하고 서툴러서 지적받고싶습니다.