λ°μν
π μ ν μ λ ¬(selection sort) μ΄λ
- μ€λ¦μ°¨μμ κ²½μ° κ°μ₯ μμ μμλ₯Ό 맨 μμΌλ‘ 보λΈλ€.
- 2κ°μ λ°λ³΅λ¬Έμ μ€μ²©ν΄μ ꡬννκΈ° λλ¬Έμ μκ°λ³΅μ‘λλ O(n^2)
- ν μΈνΈκ° λλ λλ§λ€ κ°μ₯ μμ μκ° λ§¨ μμ μ¨λ€.
π μ ν μ λ ¬(selection sort) μμ
- μμ μμ λ μ€λ¦μ°¨μμΌ κ²½μ°μ μμ μ΄λ€.
- 5κ°μ μμμ€ κ°μ₯ μμ μ«μλ₯Ό 맨 μμ μ«μμ λ°κΎΌλ€.
- 1μΈνΈκ° λλλ©΄ κ°μ₯ μμ μκ° λ§¨ μμΌλ‘ μ¨λ€.
- λ€μ μΈνΈλΆν°λ 맨 μμ μ«μλ₯Ό λΉΌκ³ λΉκ΅λ₯Ό ν΄μ€λ€. (μ΄λ―Έ κ°μ₯ μμ μμ΄κΈ° λλ¬Έ)
π μ ν μ λ ¬(selection sort) ꡬν
numbers = [5, 3, 8, 1, 2]
print(f'μ λ ¬ μ : {numbers}')
print()
for i in range(len(numbers)):
print(f'{i + 1}μΈνΈ')
min_number = 99
idx = 0
for j in range(i, len(numbers)):
if numbers[j] < min_number:
min_number = numbers[j]
idx = j
else:
numbers[i], numbers[idx] = numbers[idx], numbers[i]
print(f'μ λ ¬ μ€: {numbers}')
print()
print(f'μ λ ¬ ν: {numbers}')
π μ ν μ λ ¬(selection sort) νΉμ§
- μ₯μ
- λ¨μν ꡬν
- λ¨μ
- μ λ ¬μ΄ λΆνμν μμμλ μ κ·Όν΄μΌ νλ€.
- μκ°λ³΅μ‘λ O(n^2)
- ꡬνμ΄ κ°λ¨νμ§λ§ λ§€μ° λΉνΌμ μ΄λ―λ‘ κ±°μ μ°μ΄μ§ μμ.
π μ ν μ λ ¬(selection sort) μ°Έκ΅μλ£
λ°μν
'CS > Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
ν΅ μ λ ¬(quick sort) (1) | 2020.09.24 |
---|---|
μ½μ μ λ ¬(insertion sort) (0) | 2020.09.23 |
λ²λΈ μ λ ¬(bubble sort) (0) | 2020.09.21 |
λΉ μ€(Big O) - μκ°λ³΅μ‘λ (0) | 2020.09.09 |
μ΅μ μ μ₯ νΈλ¦¬(Minimum Spanning Tree) (2) | 2020.08.12 |