728x90
정의
선택 정렬(選擇整列, selection sort)은 제자리 정렬 알고리즘의 하나로, 다음과 같은 순서로 이루어진다.
- 주어진 리스트 중에 최소값을 찾는다.
- 그 값을 맨 앞에 위치한 값과 교체한다(패스(pass)).
- 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다.
코드
fun main(args: Array<String>) {
// INPUT : [42, 32, 24, 60, 15]
// OUTPUT : [15, 24, 32, 42, 60]
val result = selectedSort(intArrayOf(42, 32, 24, 60, 15))
result.forEach { r ->
print("$r ")
}
}
private fun selectedSort(arr: IntArray): IntArray {
// 배열의 최소 값을 찾는다.
var index = 0
while (index != arr.size) {
var min = Int.MAX_VALUE
var target = 0
for (i in index until arr.size) {
if (min > arr[i]) {
min = arr[i]
target = i
}
}
// 최소값으로 찾은 값과 배열의 index 값과 위치를 바꾼다.
val temp = arr[index]
arr[index] = min
arr[target] = temp
// 최소값을 앞에 채웠기 때문에 index 를 증가 시킨다.
index++
}
return arr
}
728x90
'알고리즘(w.KOTLIN)' 카테고리의 다른 글
[알고리즘] 가장 긴 증가하는 부분 수열 구하기 (0) | 2023.05.09 |
---|---|
[알고리즘] 에라토스테네스의 체 (0) | 2023.04.12 |
[알고리즘] 버블 정렬 (0) | 2022.11.11 |
[BOJ][2563] 색종이 (0) | 2022.10.25 |
[BOJ][5597] 과제 안 내신 분..? (0) | 2022.10.25 |