본문 바로가기
개발/CodingTest

[자료구조] 선택정렬이란?

by on_master 2024. 1. 24.

선택정렬

오늘은 정렬 중에서 가장 쉬운 정렬, 선택정렬에 대해서 얘기해보려고합니다.

 

선택정렬이란, 데이터가 무작위로 여러 개 있을 때, 이 중에서 가장 작은 테이터를 선택해 맨 앞에 있는 데이터와 바꾸고, 그 다음 작은 데이터를 선택해 앞에서 두 번째 데이터와 바꾸는 과정을 말합니다.

 

가장 작은 것을 선택해서 앞으로 보내는 과정을 반복해서 수행하다 보면, 전체 데이터의 정렬이 이루어집니다.

 

바로 소스코드로 보시는 것이 이해하기 수월하실 겁니다.

 

소스 코드

# 선택정렬

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

for i in range(len(array)):
    # 일단 첫번째 숫자를 가장 작은 숫자라고 가정
    min_index = i

    # 뒤에 숫자들과 비료하면서 크기 비교
    for j in range(i+1, len(array)):
        # min_index의 숫자보다 더 작은 숫자가 있을 시
        if array[min_index] > array[j]:
            # 그 숫자가 min_index
            min_index = j
    # 자리 스와핑, 그리고 다음 숫자로 넘어감
    array[i], array[min_index] = array[min_index], array[i]

print(array)

 

선택 정렬은 간단한 정렬 알고리즘 중 하나로, 정렬되지 않은 리스트에서 가장 작은 원소를 찾아서 해당 위치와 맞바꾸는 방식으로 동작합니다. 

 

이를 표로 나타내면 다음과 같습니다. 아래의 예시에서는 오름차순으로 정렬하는 과정을 보여줍니다.

원래 리스트: [5, 2, 9, 3, 4]

단계 현재 리스트 가장 작은 원소 가장 작은 원소의 인덱스 정렬된 부분
초기 [5, 2, 9, 3, 4]     []
1단계 [5, 2, 9, 3, 4] 2 1 [2]
2단계 [5, 9, 3, 4] 2 1 [2]
3단계 [5, 9, 3, 4] 3 2 [2, 3]
4단계 [5, 9, 4] 3 2 [2, 3]
5단계 [5, 9, 4] 4 2 [2, 3, 4]
완료 [5, 9, 4] 5 0 [2, 3, 4, 5]


최종적으로, 선택 정렬은 원래 리스트를 반복하면서 가장 작은 원소를 찾고, 해당 원소를 정렬된 부분으로 이동시키는 과정을 반복하면서 정렬을 수행합니다. 이러한 과정을 통해 리스트가 정렬됩니다.

'개발 > CodingTest' 카테고리의 다른 글

[자료구조] 퀵 정렬이란?  (2) 2024.01.24
[자료구조] 삽입정렬이란?  (0) 2024.01.24
[자료구조] DFS와 BFS의 비교  (1) 2024.01.23
[자료구조] BFS 이란?  (1) 2024.01.23
[자료구조] DFS 이란?  (1) 2024.01.23