Sorting Algorithms - part 1
where sorting algorithms help us
μ¬λλ€μ μ λ ¬ν λ - Sorting a list of people
μ€κ°κ°μ μ°Ύμ λ - Find the median
μ€λ³΅μ μ κ±°ν λ - Find duplicates in some date
μ΄μ§νμ
μ 곡λΆνλκ°?
μ λ ¬μ λ°λ₯Έ μ±λ₯μ μ°¨μ΄ - μ±λ₯μ μ½μ λ§μΆκΈ° μν΄μλ€.
ν° μλ£λ μ μ μλ£λ μν©μ λ°λΌμ λ¬λΌμ§ μ μλ€.
Stable - μμ μ μΈ
μ°¨μ΄λ₯Ό λΉκ΅νκ³ μ΄ν΄ν΄μΌ νλ€.
What does "stable" mean?
μλμ μΈ κ·Έ μμΉλ₯Ό μ΅μ’ κ²°κ³Όμμ μ μ§ λλκ° ?
κ°μ κ°μ΄ μμλ μ²μμ μλμ μμΉκ° μ λ ¬λ μμλ κ°μ΄ μμΉνμ¬ μλκ°
bubble sort, insertion sort, merge sort (selection sort λΉΌκ³ )
What does "in place" mean?
bubble sort, insertion sort, selection sort (merge sort λΉΌκ³ )
Bubble Sort
μ μ§μ μΌλ‘ λ³ΈμΈμ μμΉλ₯Ό μ°Ύμκ°λ€. μλ‘ λ½κΈλ½κΈ
리μ€νΈκ° μλ€.
νλ² νκ³ κ³μ νλλ€. μΌ -> μ€
κ·Έ μμμλμ λ λΉκ΅νλ©΄μ μ리λ₯Ό λ°κΏλκ°λ€.
λ°λ³΅μννλ©΄μ μΌμ€λ₯Ό λ°κΏκ°λ€.
length - 1 λ§νΌ μννλ€. κ·ΈμΉλ§ μ₯λ΄ν μ μλ€.
Big O
Worst Case
Best Case
O(n**2)
νλ² νμλ μ 체λ₯Ό νκ³ μ΄ νμλ nλ²μ΄λ€.
O(n)
λͺ¨λ κ² λ€ μ λ ¬μ΄ λμ΄μλ€.
νλ²λ μνν΄μΌνλμ§ μνλ₯Ό λλ΄μΌνλμ§λ₯Ό νμ ν΄μΌνλ€.
μ₯μ
Memory: "in place" algorithm
In place - 리μ€νΈκ° μ£Όμ΄μ§, μΆκ°μ μΈ λ€λ₯Έ 곡κ°μ μ μ₯λ ν μ¬μ©λλκ² μλλ€. μΆκ°μ μΈ μ₯μκ° νμμλ€.
μ¬μ΄λ‘μ§μ΄λ€ - λ©΄μ μ§λ¬Έμ λ§μ΄ λμ¨λ€.. μ΄κ²λ λͺ¨λ₯΄λ©΄ λ°λ³΄λ©μΆ©μ΄κ΅¬λ'γ '
μ΄λ€λ¦¬μ€νΈκ° μ λ ¬μ΄ λμ΄μλμ§ μλμ΄μλμ§ μ μ μλ€.
λ¨μ
μ±λ₯μ μΌλ‘ λ³λ‘λ€ - μλ£κ° λ§μ κ²½μ°
Insertion Sort
μ€λ₯Έμͺ½μ΄ pickλλ€.
μΌμͺ½ -> μ€λ₯Έμͺ½ μ§ννλ©΄μ μ€λ₯Έμͺ½μ΄ μΌμͺ½λ³΄λ€ ν¬λ©΄ λΌμ΄λ£λλ€.
μ€λ₯Έμͺ½μ΄ λ ν¬λ€λ©΄ pickμ΄ λ μκ° λ°λλ€.
μΌμͺ½μ μλ μ λ λΉκ΅νλ€.
Big O
Worst Case
Best Case
O(n**2)
νλ² νμλ μ 체λ₯Ό νκ³ μ΄ νμλ nλ²μ΄λ€.
O(n)
λͺ¨λ κ² λ€ μ λ ¬μ΄ λμ΄μλ€.
μ₯μ
In place
λ¨μ
μ±λ₯μ μΌλ‘ λ³λ‘λ€.
Selection Sort
μΌμͺ½ -> μ€λ₯Έμͺ½κΉμ§ λ°°μ΄μ΄ μλ€.
μΌμͺ½λΆν° 보면μ λ³ΈμΈμ μμΉλ₯Ό λ°λ‘ μ°Ύμμ λ£λλ€. 0λ²μ§Έ μΈλ±μ€ / 1λ²μ§Έ μΈλ±μ€
μ리λ₯Ό κΈ°μ€μΌλ‘ μ λ ¬νλ€.
0λ²μ§Έ μΈλ±μ€μ μμ΄μΌνλμ λ₯Ό μ°Ύλλ€.
1λ²μ§Έ μΈλ±μ€λ₯Ό μ°Ύλλ€.
2λ²μ§Έ μΈλ±μ€λ₯Ό μ°Ύλλ€.
Big O
Worst Case
Best Case
O(n**2)
nλ§νΌμ λ¨κ³μ§λ§ νλ¨κ³μ nλ§νΌ λμμΌνκΈ° λλ¬Έμ..
O(n**2)
μ리λ₯Ό κΈ°μ€μΌλ‘ νλ€. μλμ μ΄μ§ μλ€.
Stable
Stable νμ§ μλλ€.
μ₯μ
In placeμ΄λ€.
λ¨μ
νΌν¬λ¨Όμ€κ° μ΅μ μ΄λ€.
Merge Sort
ν©μ³λκ°λκ±°
κ°λ³μ μΌλ‘ μλ₯Έλ€.
λκ°λ₯Ό λΉκ΅νλ€. λΉκ΅ν μ λ ¬ν ν ν΅ν©νλ€.
λκ° + λκ°λ₯Ό ν©μΉ λ 맨μμ μ리λ₯Ό λκ° λΉκ΅ λ·μ리 λκ°λ₯Ό λΉκ΅νλ€.
λ€κ° + λ€κ°λ₯Ό ν©μΉ λλ μ리μλ‘ λ λΉκ΅νλ€.
Big O
Worst Case
Best Case
O(n log(n))
νκ°κ° λ°λ° μͺΌκ°κ°λ©΄μ log nμΈλ° κ·Έ κ°―μκ° nκ° μκΈ° λλ¬Έμ n*log(n)
O(n log(n))
νκ°κ° log nμΈλ° κ·Έ κ°―μκ° nκ° μκΈ° λλ¬Έμ n*log(n)
μΉΈμμΉ΄λ°λ―Έ 'γ '
μ₯μ
νκ· μ μΌλ‘ 보μ₯μ΄ λμ΄μλ€.
μλ£κ° λ§μ λ μ¬μ©νκΈ° μ’λ€.
λ¨μ
νκ°κ° νλμ λ°°μ΄μ΄λ€. - in placeλ‘ ν μ μλ€. 곡κ°μ μΈ νμλκ° o(n)
μλ£κ° μ μ λλ λ³λ‘λ€.
Divide and Conquer
Divide: μ΅λν μΈμΈνκ² μμ λ¬Έμ λ‘ μͺΌκ° λ€.
Conquer: μ¬κ·μ μΌλ‘ μ λ ¬νλ€.
Combine
Quicksort
BSTκ° ν΄λΉλλ€.
μΆκ°
quick Sort
Divide and Conquer
Dynamic Programming
Last updated
Was this helpful?