[swift] Swift에서 버블 정렬 알고리즘을 구현하는 방법

버블 정렬 알고리즘은 간단하고 직관적인 정렬 알고리즘 중 하나입니다. 이 알고리즘은 인접한 두 개의 원소를 비교하여 필요에 따라 위치를 교환하는 작업을 반복하는 방식으로 동작합니다. 이번 글에서는 Swift로 버블 정렬 알고리즘을 구현하는 방법을 알아보겠습니다.

알고리즘 구현

먼저, 정렬할 배열을 인자로 받는 함수를 만들어 보겠습니다. 아래는 Swift로 버블 정렬 알고리즘을 구현한 예시 코드입니다.

func bubbleSort(_ arr: [Int]) -> [Int] {
    var sortedArr = arr
    
    for i in 0..<sortedArr.count {
        for j in 0..<(sortedArr.count - i - 1) {
            if sortedArr[j] > sortedArr[j + 1] {
                let temp = sortedArr[j]
                sortedArr[j] = sortedArr[j + 1]
                sortedArr[j + 1] = temp
            }
        }
    }
    
    return sortedArr
}

위 코드에서 arr은 정렬할 배열입니다. sortedArr 변수를 선언하여 인자로 받은 배열의 복사본을 저장합니다. 그리고 for 루프를 사용하여 배열의 모든 요소를 반복적으로 비교하고 필요한 경우 위치를 교환합니다.

for 루프의 첫 번째 반복문은 배열의 길이만큼 반복하며, 두 번째 반복문은 배열의 길이에서 첫 번째 반복문 변수 i를 뺀 값만큼 반복합니다. 이를 통해 매 반복마다 마지막 요소부터 정렬되어서 정렬할 필요가 없는 부분을 제외하고 비교 작업을 수행합니다.

두 요소를 비교하여 첫 번째 요소가 더 큰 경우, 두 요소의 위치를 교환합니다. 이를 통해 큰 값이 반복적으로 배열의 맨 뒤로 이동하게 됩니다.

사용 예시

위의 코드를 사용하여 정렬을 수행하는 예시를 살펴보겠습니다.

let unsortedArr = [5, 3, 8, 2, 1, 4]
let sortedArr = bubbleSort(unsortedArr)
print(sortedArr) // [1, 2, 3, 4, 5, 8]

위 예시에서는 [5, 3, 8, 2, 1, 4]라는 정렬되지 않은 배열을 정렬하고 있습니다. bubbleSort 함수를 호출하여 정렬된 배열을 반환받고, 결과를 출력합니다.

결론

이렇게 Swift로 버블 정렬 알고리즘을 구현하는 방법에 대해 알아보았습니다. 버블 정렬은 간단하고 이해하기 쉬운 알고리즘이지만, 배열의 길이가 큰 경우에는 성능 이슈가 발생할 수 있습니다. 따라서 큰 규모의 데이터를 정렬해야 하는 경우에는 다른 효율적인 정렬 알고리즘을 고려하는 것이 좋습니다.

참고 자료