1. ๋ฌธ์
2. ์ ์ถ๋ ฅ
3. ์ ์ถ๋ ฅ ์์
4. ๋ฌธ์ ์ค๊ณ
- O(n log n)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง, ํฉ๋ณ์ ๋ ฌ
- ๋ฐฐ์ด์ ์ ๋ฐ์ผ๋ก ๋๋์ด ๋ค์ ํฉ๋ณ์ ๋ ฌํ๋ ์ฌ๊ท์ ์ธ ์ฑ์ง์ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก, ์ฌ๊ทํจ์๋ฅผ ํตํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์
- ์์๊ฐ 1๊ฐ๊ฐ ๋ ๋ ๊น์ง ๋๋๊ณ (๊ธฐ์ ์กฐ๊ฑด), ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ์ฌ ์์ ๋ฐฐ์ด์ ์์๋ฅผ ํฉ์น๊ณ
- ๋ค์ ์๋์ ๋ฐฐ์ด์ ์ ์ฅํจ์ผ๋ก์จ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํจ
5. ์ ์ฒด ์ฝ๋
//MARK: - ํฉ๋ณ์ ๋ ฌ ๊ตฌํํ๊ธฐ
//MARK: - Framework
import Foundation
//MARK: - Variable
var tempArray: [Int] = []
//MARK: - Function
func merging(_ array: inout [Int], _ s1: Int, _ e1: Int, _ s2: Int, _ e2: Int) -> Void {
var p: Int = s1
var q: Int = s2
var index: Int = 0
while p <= e1 && q <= e2 {
if array[p] <= array[q] {
tempArray[index] = array[p]
p += 1
} else {
tempArray[index] = array[q]
q += 1
}
index += 1
}
if p > e1 {
for i in q...e2 {
tempArray[index] = array[i]
index += 1
}
} else {
for i in p...e1 {
tempArray[index] = array[i]
index += 1
}
}
for i in s1...e2 {
array[i] = tempArray[i - s1]
}
}
func mergeSort(_ array: inout [Int], _ start: Int, _ end: Int) -> Void {
//array์ start ๋ฒ ์งธ ๊ฐ ๋ถํฐ end ๋ฒ ์งธ ๊ฐ ๊น์ง ํฉ๋ณ์ ๋ ฌ ํ๋ ํจ์
if start >= end {
return
}
let mid: Int = (start + end) / 2
mergeSort(&array, start, mid)
mergeSort(&array, mid + 1, end)
merging(&array, start, mid, mid + 1, end)
}
func solution() -> Void {
//MARK: - Input
guard let n: Int = Int(readLine() ?? "0") else { return }
guard let input = readLine()?.components(separatedBy: " ") else { return }
var answer: String = ""
var array: [Int] = input.map { Int($0) ?? 0 }
tempArray = Array(repeating: 0, count: n)
//MARK: - Process
mergeSort(&array, 0, n - 1)
for i in 0..<array.count - 1 {
answer += "\(array[i]) "
}
answer += "\(array[array.count - 1])"
//MARK: - Output
print(answer)
}
solution()
์ ์ฒด์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค.
'Swift Data Structure And Algorithm > Sort Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฒ๋ธ์ ๋ ฌ(Bubble Sort) (0) | 2022.04.18 |
---|---|
์ฝ์ ์ ๋ ฌ(Insertion Sort) (0) | 2022.04.18 |
์ ํ์ ๋ ฌ(Selection Sort) (0) | 2022.04.18 |
ํต์ ๋ ฌ ๊ตฌํํ๊ธฐ (0) | 2022.03.31 |
K๋ฒ์งธ ํฐ ์ ์ฐพ๊ธฐ (0) | 2022.02.28 |