[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)으로 비효율적입니다. 따라서 큰 규모의 배열에 대해서는 효율적인 정렬 알고리즘을 사용하는 것이 좋습니다.


참고 문서: