- Selection Sort (μ ν μ λ ¬)
- Bubble Sort (λ²λΈ μ λ ¬)
- Insertion Sort (μ½μ μ λ ¬)
- Merge Sort (λ³ν© μ λ ¬)
- Quick Sort (ν΅ μ λ ¬)
- κ°μ₯ μμ κ°μ μ°Ύμ 0 μμΉμ λμ΅λλ€.
- κ·Έ λ€μ μμ κ°μ μ°Ύμ 1 μμΉμ λμ΅λλ€.
- κ·Έ λ€μ μμ κ°μ μ°Ύμ 2 μμΉμ λμ΅λλ€.
for (int i = 0; i < a.length - 1; ++i) {
// λ°°μ΄ aμ iλΆν° λκΉμ§ μ΅μκ°μ μ°Ύμ΅λλ€.
// μ΅μκ°κ³Ό i μμΉμ κ°μ μλ‘ swap ν©λλ€.
}- SelectionSort Code
λ§μ§λ§ λ¨κ³μμλ λ¨μ κ°μ΄ 1κ°μ λλ€.
μ΄λ μ΅μκ°μ μ°Ύλ κ²μ μλ―Έκ° μμΌλ―λ‘i < a.length - 1μ λλ€.
μκ° λ³΅μ‘λ: O(n^2)
κ³΅κ° λ³΅μ‘λ: O(n)
(1) 0 ~ (i - 1) κΉμ§, λ μμ κ°μ λΉκ΅νμ¬ μΌμͺ½ κ°μ΄ ν¬λ©΄ μλ‘ μμΉλ₯Ό λ°κΏλλ€.
(2) (1)λ² λ¨κ³λ₯Ό κ±°μΉλ©΄ 0 ~ i κΉμ§μ μ΅λκ°μ΄ i μμΉμ μκ² λ©λλ€.
(3) 0 ~ (i - 2) κΉμ§, λ μμ κ°μ λΉκ΅νμ¬ μΌμͺ½ κ°μ΄ ν¬λ©΄ μλ‘ μμΉλ₯Ό λ°κΏλλ€.
(4) (3)λ² λ¨κ³λ₯Ό κ±°μΉλ©΄ 0 ~ (i - 1) κΉμ§μ μ΅λ κ°μ΄ (i - 1) μμΉμ μκ² λ©λλ€.
for (int i = a.length - 1; i >= 1; --i) {
for (int j = 0; j < i; ++j) {
if (a[j] > a[j+1]) {
swap(a, j, j+1);
}
}
}- BubbleSort Code
μκ° λ³΅μ‘λ: O(n^2)
κ³΅κ° λ³΅μ‘λ: O(n)
- μ½μ μ λ ¬μ λ λ²μ§Έ μΈλ±μ€λΆν° μμν©λλ€.
for (int i = 1; i < a.length; ++i) {
int value = a[i];
// a λ°°μ΄μ 0 μμ (i - 1) μ¬μ΄μμ
// value λ³΄λ€ ν° κ°λ€μ λ€λ‘ ν μΉΈμ© μ΄λνκ³ , κ·Έ κ°λ€ μμ value λ₯Ό λ£μ΅λλ€.
}- InsertionSort Code
μκ° λ³΅μ‘λ: O(n^2)
κ³΅κ° λ³΅μ‘λ: O(n)
- MergeSort Code
merge λ©μλμ μν μκ°μ O(n)μ λλ€.
mergeSort λ©μλλ λ°°μ΄μ 1/2λ‘ λλκ³ , λλ λ°°μ΄ κ°κ°μ λν΄ mergeSort λ₯Ό μ¬κ· νΈμΆν©λλ€.
λ°λΌμ μ¬κ· νΈμΆ νμλ logN μ λλ€.
κ·Έλ¬λ―λ‘ mergeSort λ©μλμ μκ° λ³΅μ‘λλ O(Nlog N)μ λλ€.
곡κ°λ³΅μ‘λ: O(n)
- QuickSort Code
ν΅ μ λ ¬μ partition λ©μλμ μν μκ°μ O(n)μ λλ€.
quickSort λ©μλμ μ¬κ· νΈμΆ νμλ λλ΅ O(log N)μ λλ€.
λ°λΌμ, quickSort λ©μλμ μν μκ°μ O(Nlog N)μ λλ€.
- partition λ©μλκ° λ°°μ΄μ μ νν 1/2λ‘ λλλ€λ©΄ μ¬κ· νΈμΆ νμλ log N μ΄κ³ ,
- quickSort λ©μλμ μν μκ°μ O(Nlog N) μ λλ€.
- partition λ©μλκ° λ°°μ΄μ 0 : n-1 ν¬κΈ°λ‘ λλλ€λ©΄ μ¬κ· νΈμΆ νμλ n μ
λλ€.
μ¬κ· νΈμΆμμ κΈ°μ€κ°μ μ μΈλκΈ° λλ¬Έμ 0 : n μ΄ μλλΌ 0 : n-1 μ λλ€.
- quickSort λ©μλμ worst case μν μκ°μ O(N^2) μ λλ€.
- quickSort, partition λ©μλκ° μ¬μ©νλ λ©λͺ¨λ¦¬ 곡κ°μ O(1) μ λλ€.
- λ³ν© μ λ ¬
μν μκ°μ μΈμ λ O(Nlog N) μ λλ€.
λ©λͺ¨λ¦¬ μꡬλμ μΈμ λ O(N) μ λλ€. - ν΅ μ λ ¬
μν μκ° νκ· μ O(Nlog N) μ΄μ§λ§, μ΅μ μ κ²½μ° O(N^2) μ λλ€.
κ·Έλ μ§λ§ μ΅μ μ κ²½μ°λ κ·Ήν λλ λλ€.
ν΅ μ λ ¬μ λ©λͺ¨λ¦¬ μꡬλμ O(1) μ λλ€.
μμ κ°μ μ₯λ¨μ λλ¬Έμ, μ€λ¬΄μμλ μ£Όλ‘ ν΅ μ λ ¬μ μ¬μ©ν©λλ€.
