Notice
Recent Posts
Recent Comments
Link
«   2026/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
Archives
Today
Total
관리 메뉴

Seung-MinJi

[알고리즘] 선택 정렬 본문

Computer Science

[알고리즘] 선택 정렬

지승민 2023. 9. 8. 15:23

1. 선택 정렬이란

다음과 같은 순서를 반복하며 정렬하는 알고리즘

- 주어진 데이터중, 최소값을 찾음

- 해당 최소값을 데이터 맨 앞에 위치한 값과 교체함

- 맨 앞의 위치를 뺀 나머지 데이터를 동일한 방법으로 반복함

2. 어떻게 코드로 만들까?

데이터가 2개 일때(예: dataList = [9,1])

- data_list[0] > data_list[1] 이므로 data_list[0] 값과 data_list[1] 값을 교환

 

데이터가 3개 일때(예: dataList = [9,1,7])

- 처음 한번 실행하면 1, 9, 7이 됨

- 두 번째 실행하면 1,7,9가 됨

 

데이터가 4개 일떄(예: dataList = [9,3,2,1])

- 처음 한번 실행하면 1,3,2,9가 됨

- 두번쨰 실행하면 1,2,3,9,가 됨

- 세 번쨰 실행하면, 변화 없음

 

3. 알고리즘 구현

- for stand in range(len(data) -1 )로 반복

- lowest = stand로 놓고

- for num in range(stand, len(data_list) stand 이후부터 반복

 - 내부 반복문 안에서 data_list[lowest] > data_list[num] 이면, lowest = num

- data_list[num], data_list[lowest] = data_list[lowest], data_list[num]

 

# 선택 정렬 함수
def Selection_sort(data_list):
    for stand in range(len(data_list)-1):
        lowest = stand
        for index in range(stand+1, len(data_list)):
            if data_list[index] < data_list[lowest] :
                lowest = index
        data_list[lowest], data_list[stand] = data_list[stand], data_list[lowest]
    return data_list
   
# 정렬 함수 정상작동 확인
import random
data_list = random.sample(range(100), 10)
print(data_list)
print (Selection_sort(data_list))

4. 알고리즘 분석

- 반복문이 두 개 O(n^2)

 - 실제로 상세하게 계산하면 n*(n-1) /2

'Computer Science' 카테고리의 다른 글

[알고리즘] 재귀 용법  (1) 2023.09.08
[알고리즘] 공간 복잡도  (0) 2023.09.08
[알고리즘] 삽입 정렬  (0) 2023.09.08
[알고리즘] 버블 정렬  (0) 2023.09.08
[자료 구조] 힙  (0) 2023.08.15