youngjaeLee1026 2022. 4. 18. 11:00

1. 문제

  • 기본 정렬 알고리즘인 버블정렬을 구현

2. 문제 설계

  • 버블정렬은 인접한 두 원소를 비교해가면서 정렬을 하는 알고리즘, 선택정렬 및 삽입정렬과 다르게 오른쪽 부터 정렬이 되는 형태를 가짐
  • O(N^2)의 시간복잡도를 가짐

3. 전체 코드

//MARK: - 버블정렬(Bubble Sort)

//MARK: - Framework
import Foundation

//MARK: - Function
func solution() -> Void {
    //MARK: - input
    guard let N: Int = Int(readLine() ?? "0") else { return }
    guard let input = readLine()?.components(separatedBy: " ") else { return }
    var array: Array<Int> = input.map { Int($0) ?? 0 }
    
    //MARK: - process
    for i in stride(from: N - 1, to: 0, by: -1) {
        for j in 0..<i {
            if array[j] > array[j + 1] {
                let temp: Int = array[j]
                array[j] = array[j + 1]
                array[j + 1] = temp
            }
        }
    }
    
    //MARK: - output
    for data in array {
        print(data, terminator: " ")
    }
}
solution()

 

전체코드는 여기에서 확인할 수 있습니다.