[swift] Swift에서 선택 정렬 알고리즘을 구현하는 방법
선택 정렬(Selection Sort)은 가장 간단한 정렬 알고리즘 중 하나입니다. 이 알고리즘은 주어진 배열에서 가장 작은 값을 찾아 첫 번째 위치로 이동시키고, 그 다음으로 작은 값을 두 번째 위치로 이동시키는 작업을 반복하여 정렬을 수행합니다.
다음은 Swift에서 선택 정렬 알고리즘을 구현하는 예시입니다.
func selectionSort(_ array: [Int]) -> [Int] {
guard array.count > 1 else {
return array
}
var sortedArray = array
for currentIndex in 0..<(sortedArray.count - 1) {
var minIndex = currentIndex
for i in (currentIndex + 1)..<sortedArray.count {
if sortedArray[i] < sortedArray[minIndex] {
minIndex = i
}
}
if currentIndex != minIndex {
sortedArray.swapAt(currentIndex, minIndex)
}
}
return sortedArray
}
let unsortedArray = [5, 2, 9, 1, 3]
let sortedArray = selectionSort(unsortedArray)
print(sortedArray) // 출력: [1, 2, 3, 5, 9]
위의 코드에서 selectionSort
함수는 정수 배열을 입력으로 받아 선택 정렬 알고리즘을 적용하여 정렬된 배열을 반환합니다.
선택 정렬을 구현하기 위해 두 개의 반복문을 사용합니다. 외부 반복문은 배열의 첫 번째 원소부터 마지막 바로 앞 원소까지를 순회합니다. 내부 반복문은 현재 인덱스보다 큰 인덱스들을 순회하며 가장 작은 값을 찾습니다. 가장 작은 값을 찾으면 minIndex
를 업데이트하고, 외부 반복문에서 현재 인덱스의 값과 minIndex
의 값이 다른 경우 위치를 교환합니다.
이후 정렬이 완료되면 정렬된 배열이 반환되고, 위의 예시에서는 [1, 2, 3, 5, 9]
가 출력됩니다.
선택 정렬은 알고리즘이 간단하여 이해하기 쉽지만, 시간 복잡도가 O(n^2)으로 비효율적입니다. 따라서 큰 규모의 배열에 대해서는 효율적인 정렬 알고리즘을 사용하는 것이 좋습니다.
참고 문서:
- Selection Sort - Wikipedia
- Selection sort algorithm - GeeksforGeeks
- The Selection Sort Algorithm in Swift