728x90
선택정렬은 각 반복에서 정렬되지 않은, 가장 작은 요소를 선택하고, 해당 요소를 배열의 가장 앞쪽에 위치시켜 차례대로 정렬시키는 알고리즘입니다.
선택 정렬 알고리즘
1. 첫 번째 요소를 minimum으로 설정합니다.
2. 두 번째 요소(12)와 비교합니다.
두 번째 요소가 minimum보다 작으면, 두 번째 요소를 minimum으로 선택합니다.
이후 세번째 요소와 비교하여 minimum(지금 두번째 요소)보다 세번째 요소가 더 작으면,
세번째 요소를 minimum으로 선택합니다.
이 process는 마지막까지 반복되어, 한 바퀴가 끝나면 첫 번째 minimum자리에 가장 작은 값이 위치하게 됩니다.
선택된 minimum은 배열의 첫 번째 자리에 위치하게 됩니다.
모든 요소가 올바른 위치에 배치될때까지 1~3단계를 반복합니다.
선택 정렬 알고리즘
selectionSort(array, size)
for i from 0 to size - 1 do
set i as the index of the current minimum
for j from i + 1 to size - 1 do
if array[j] < array[current minimum]
set j as the new current minimum index
if current minimum is not i
swap array[i] with array[current minimum]
end selectionSort
먼저 minimum의 자리를 찾아야겠죠?
for i from 0 to size - 1 do
전체 배열에서 1을 빼서 인덱스의 총 크기를 정합니다. 0~n
그리고 i에 배열의 0을 줘서 첫번째 임을 알려줍니다.
set i as the index of the current minimum
minimum에는 i(=0)의 인덱스 번호가 들어가서, 첫 번째 위치임을 알려줍니다.
for j from i + 1 to size - 1 do
배열은 i다음 번째 j부터 끝까지(전체길이의 인덱스에서 -1)까지 반복합니다.
if array[j] < array[current minimum]
set j as the new current minimum index
만약, 현재 값이 minimum보다 작다면, 현재 값(j)를 minimum에 넣어줍니다.
if current minimum is not i
swap array[i] with array[current minimum]
i번째 값과 minimum의 값이 일치하지 않는다면 minimum이 바뀌었다는 뜻이므로 swap합니다.
728x90
'컴퓨터과학 > 알고리즘' 카테고리의 다른 글
알고리즘 증명하는 법 (0) | 2024.09.11 |
---|---|
병합정렬(Merge Sort) 알고리즘 (0) | 2024.09.07 |
버블정렬(Bubble Sort) 알고리즘 (2) | 2024.09.07 |
삽입 정렬(Insertion Sort) 알고리즘 (2) | 2024.09.03 |
알고리즘 뭔지 간단하게 설명해줄게요 (0) | 2024.07.29 |