티스토리 뷰

알고리즘

선택 정렬 알고리즘

삼전동해커 2021. 10. 18. 11:34

선택정렬

정렬되지 않은 배열이 주어졌을 때 오름차순으로 선택정렬해보자.

 

arr[] = 5 | 4 | 6 | 8 | 2 | 3 | 1 | 7 | 9 | 0

의 배열을 선택정렬을 사용해 오름차순으로 정렬하고자 한다.

 

값을 swap할 기준 인덱스를 맨 처음 값 arr[0]=5로 잡는다.

그리고 값을 비교할 비교 인덱스를 arr[1]=4로 잡는다.

4와 다음 6,8,2 .. 를 비교하면서 가장 작은 비교 인덱스 값을 기준 인덱스와 swap한다.

6,8은 4보다 크니 지나가고, 2와 비교했을 때 2가 더 작으므로 비교 인덱스는 arr[3]=2로 바뀐다.

이제 2와 3을 비교, 1을 비교했을 때 1이 더 작으므로 비교 인덱스는 arr[5]=1로 바뀐다.

비교 인덱스의 변화는 4-> 2-> 1->0 순으로 변하고 0을 마지막으로 기준 인덱스와 swap한다.

 

arr[] = 0 | 4 | 6 | 8 | 2 | 3 | 1 | 7 | 9 | 5

 

다시 기준 인덱스를 arr[1]=4로 잡고, 비교 인덱스를 arr[2]=6으로 설정.

비교 인덱스의 변화는 6->2->1 이고, 5까지 비교한 후 1과 4를 swap한다.

 

arr[] = 0 | 1 | 6 | 8 | 2 | 3 | 4 | 7 | 9 | 5

 

다시 기준 인덱스는 arr[2]=6, 비교 인덱스는 arr[3]=8.

비교 인덱스의 변화는 8->2. 5까지 비교한 후 6과 2를 swap한다.

 

arr[] = 0 | 1 | 2 | 8 | 6 | 3 | 4 | 7 | 9 | 5

 

다시 기준 인덱스는 arr[3]=8, 비교 인덱스는 arr[4]=6.

비교 인덱스의 변화는 6->3. 5까지 비교한 후 8과 3을 swap.

 

arr[] = 0 | 1 | 2 | 3 | 6 | 8 | 4 | 7 | 9 | 5

 

기준 인덱스 arr[4]=6, 비교 인덱스 arr[5]=8

비교 인덱스 변화 8->4, 5까지 비교한 후 6과 4 swap.

 

arr[] = 0 | 1 | 2 | 3 | 4 | 8 | 6 | 7 | 9 | 5

 

기준 인덱스 arr[5]=8,비교 인덱스 arr[6]=6

비교 인덱스 변화 6->5, 8과 5 swap.

 

arr[] = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 8

 

기준 인덱스 arr[6]=6. 비교 인덱스의 변화 없으므로 skip

 

기준 인덱스 arr[7]=7. 비교 인덱스 변화 없으므로 skip

 

기준 인덱스 arr[8]=9. 비교 인덱스 8과 비교했을 때 더 크므로 swap.

 

arr[] = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

arr = [5, 4, 6, 8, 2, 3, 1, 7, 9, 0]

def sel_sort(arr):
    n = len(arr)
    for i in range(n):
        st_idx = i
        for j in range(i+1,n):
            if arr[j] < arr[st_idx]:
                st_idx = j
        arr[i],arr[st_idx] = arr[st_idx],arr[i]
        print(arr[:i+1])


print("before: ",arr)
sel_sort(arr)
print("after: ",arr)

 

'알고리즘' 카테고리의 다른 글

코테 / 자동차 테스트(python)  (0) 2023.09.04
합병 정렬 알고리즘  (0) 2021.10.18
퀵 정렬 알고리즘  (0) 2021.10.18
삽입 정렬 알고리즘  (0) 2021.10.18
파이썬 괄호짝 찾기 문제  (0) 2021.09.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함