μλ νμΈμ Foma π» μ λλ€!
μ λ² μκ°μ νμ΄λ μλ£κ΅¬μ‘°μ λν΄μ μμ보μλλ°μ. (νΉμλΌλ μ보μ λΆμ μ¬κΈ° μμ λ³΄κ³ μμ£ΌμΈμ!)
μ€λμ νμ μ΄μ©ν΄μ μ λ ¬μ νλ νμνΈμ λν΄μ μμλ³΄λ €κ³ ν©λλ€!
λ°λ‘ μμν κ²μ~
ν μ λ ¬((HeapSort)μ΄λ? π§
ν μ λ ¬(Heap sort)μ΄λ μ΅λ ν νΈλ¦¬λ μ΅μ ν νΈλ¦¬λ₯Ό ꡬμ±ν΄ μ λ ¬μ νλ λ°©λ²μΌλ‘μ, λ΄λ¦Όμ°¨μ μ λ ¬μ μν΄μλ μ΅λ νμ ꡬμ±νκ³ μ€λ¦μ°¨μ μ λ ¬μ μν΄μλ μ΅μ νμ ꡬμ±νλ©΄ λλ€. - μν€ λ°±κ³Ό -
μ¦, νμ μ΄μ©ν΄μ μ λ ¬μ νλ λ°©μμ΄μμ.
ν μ λ ¬ κ³Όμ π¨
ν μ λ ¬ κ³Όμ μ νμμ μμ λ₯Ό ꡬνν λμ λκ°μμ.
μμ κ³Όμ μ΄ μλμ κ°μλ°μ.
λͺ¨λ λ Έλλ₯Ό μμ νκ³ λ°°μ΄μ μ°¨λ‘λ‘ μκ²λλ©΄ μ΄λ»κ² λ κΉμ?
μ΅λνμ΄λΌλ©΄ κ°μ₯ ν° μ«μκ° μ°¨λ‘λ‘ μμ΄κ² λ κ±°κ³ μ΅μνμ΄λΌλ©΄ κ°μ₯ μμ μ«μκ° μ°¨λ‘λ‘ μμ΄κ² λκ² μ£ ?
μ¦, μ€λ¦μ°¨μ νΉμ λ΄λ¦Όμ°¨μμΌλ‘ μ λ ¬ν μ μκ²λλ κ²μ΄μ£ .
μλλ νμ λ ¬μ ν΄λκ°λ κ³Όμ μ΄μμ.
μκ°λ³΅μ‘λ
ν μ λ ¬μ μκ°λ³΅μ‘λλ Nκ°μ λ Έλλ₯Ό μ΅λ logNλ² Heapifyνλ κ³Όμ μ κ±°μΉκΈ° λλ¬Έμ O(nlogn)μ λλ€.
μ½λ ꡬν
λ¨Όμ μ λ² μκ°μ λ§λ€μ΄λμλ MaxHeapμ κ°μ Έμ€κ² μ΅λλ€.
μ½λλ‘ κ΅¬ννλ κ²μ κ°λ¨ν©λλ€.
μ°μ μ£Όμ΄μ§ λ°°μ΄μ νμΌλ‘ λ§λ€μ΄μ£Όκ³ , λ°°μ΄μ μλ λͺ¨λ μ«μλ₯Ό μμ μ€λλ€.
그리곀 heapμ μλ μ΅λκ°μ μ°¨λ‘λ‘ λ°°μ΄μ λ£μ΄μ£Όλ©΄μ μμ νλ κ³Όμ μ κ±°μΉλ©΄ μ λ ¬μ΄ μμ±λ©λλ€.
var numbers:[Int] = [4,1,7,5,3,2,6]
extension Array where Element == Int{
mutating func sortByHeap(descending:Bool) -> [Element] {
var heap = MaxHeap(nodes: self)
self.removeAll()
for _ in heap.nodes {
if let max = heap.nodes.first {
if descending {
self.append(max)
}else {
self.insert(max, at: 0)
}
}
heap.remove()
}
return self
}
}
numbers.sortByHeap(descending: false)//[1,2,3,4,5,6,7]
numbers.sortByHeap(descending: true)//[7,6,5,4,3,2,1]
'π₯ Computer Science > Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Algorithm] λμ κ³νλ²(Dynamic Programming)μ΄λ? (0) | 2021.12.09 |
---|---|
[Algorithm] ν΅ μ λ ¬(Quick Sort)λ? (feat. Swift) (0) | 2021.10.25 |
[Algorithm] ν©λ³ μ λ ¬(Merge Sort)λ? (feat. Swift) (0) | 2021.10.14 |
[Algorithm] μκ°λ³΅μ‘λ(Time-Complexity)λ? (feat. Big O) (0) | 2021.09.29 |
[Algorithm] μ½μ μ λ ¬(Insertion Sort) μ΄λ? (feat.Swift) (0) | 2021.09.28 |
λκΈ