๋ฐ์ํ

๐ ์ ํ ์ ๋ ฌ(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 |