[Python Algorithm] 선택 정렬

정예인·2022년 11월 9일
0

python

목록 보기
5/5

선택정렬(Selection Sort)

  • 대상 데이터에서 최대나 최소 데이터를 데이터가 나열된 순으로 찾아가며 선택하는 방법
  • 단점 : 구현 방법이 복잡, 시간 복잡도 O(n^2) -> 비효율적

선택정렬 과정

  1. 남은 정렬 부분에서 최솟값 또는 최댓값을 찾는다.
  2. 남은 정렬 부분에서 가장 앞에 있는 데이터와 선택된 데이터를 swap
  3. 가장 앞에 있는 데이터의 위치를 변경해(index++) 남은 정렬 부분의 범위 축소
  4. 전체 데이터 크기만큼 index 가 커질 때까지, 즉 남은 정렬 부분이 없을 때까지 반복

1427 소트인사이드 (백준)
num=list(input())
n = len(num)
k = 0
max_num = -1
while k<n and max_num!=0:   #  k는 max값 구해줄 index
    max_num = max(num[k:])
    for i in range(n):
        if max_num == 0:    # max_num==0일 시, 바뀔 값이 없으므로 break
            break
        if max_num == num[i]:      #max_num과 num[i]가 같을 시 swap -> 단 같은 값이 여러개 있을 수 있으니 모든 값을 확인하며 바꿔
            num[k],num[i]=num[i],num[k]
            k+=1

print(''.join(num))
profile
hello velog :)

0개의 댓글