๋ฐ์ํ
๐ ๋ฒ๋ธ ์ ๋ ฌ(bubble sort) ์ด๋
- ์๋ก ์ธ์ ํ ๋ ์์์ ๋์๋ฅผ ๋น๊ตํ์ฌ ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ
- 2๊ฐ์ ๋ฐ๋ณต๋ฌธ์ ์ค์ฒฉํด์ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ์๊ฐ๋ณต์ก๋๋ O(n^2)
- ์ค๋ฆ์ฐจ์์ ๊ฒฝ์ฐ 1์ธํธ(๋ฐ๊นฅ์ชฝ ๋ฐ๋ณต๋ฌธ)์ด ๋๋๋ฉด ๊ฐ์ฅ ํฐ ์๊ฐ ๋งจ ๋ค์ ์ค๊ฒ ๋๋ค.
๋ด๋ฆผ์ฐจ์์ ๊ฒฝ์ฐ ๋ฐ๋
๐ ๋ฒ๋ธ ์ ๋ ฌ(bubble sort) ์์
- ์์ ์์ ๋ ์ค๋ฆ์ฐจ์์ผ ๊ฒฝ์ฐ์ ์์ ์ด๋ค.
- ์๋ค์ ์ซ์๋ฅผ ๋น๊ตํด์ ์์ ์ซ์๊ฐ ํฌ๋ฉด ๋ค์ ์ซ์๋ ๋ฐ๊พผ๋ค.
- 1์ธํธ๊ฐ ๋๋๋ฉด ๊ฐ์ฅ ํฐ ์๊ฐ ๋งจ ๋ค๋ก ์จ๋ค.
- ๋ค์ ์ธํธ๋ถํฐ๋ ๋งจ ๋ค์ ์ซ์๋ฅผ ๋นผ๊ณ ๋น๊ต๋ฅผ ํด์ค๋ค. (์ด๋ฏธ ๊ฐ์ฅ ํฐ ์์ด๊ธฐ ๋๋ฌธ)
๐ ๋ฒ๋ธ ์ ๋ ฌ(bubble sort) ๊ตฌํ
numbers = [5, 3, 8, 1, 2]
print(f'์ ๋ ฌ ์ : {numbers}')
print()
for i in range(len(numbers)):
print(f'{i + 1}์ธํธ')
for j in range(len(numbers) - 1 - i):
if numbers[j] > numbers[j + 1]:
numbers[j], numbers[j + 1] = numbers[j + 1], numbers[j]
print(f'์ ๋ ฌ ์ค: {numbers}')
print()
print(f'์ ๋ ฌ ํ: {numbers}')
๐ ๋ฒ๋ธ ์ ๋ ฌ(bubble sort) ํน์ง
- ์ฅ์
- ๋จ์ํ ๊ตฌํ
- ๋จ์
- ์ ๋ ฌ์ด ๋ถํ์ํ ์์์๋ ์ ๊ทผํด์ผ ํ๋ค.
- ์๊ฐ๋ณต์ก๋ O(n^2)
- ๊ตฌํ์ด ๊ฐ๋จํ์ง๋ง ๋งค์ฐ ๋นํผ์ ์ด๋ฏ๋ก ๊ฑฐ์ ์ฐ์ด์ง ์์.
๐ ๋ฒ๋ธ ์ ๋ ฌ(bubble sort) ์ฐธ๊ต์๋ฃ
์ฒ์ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์ธ ๋ ๊ฐ์ฌ๋๊ป์ ๋ณด์ฌ์ค ์๋ฃ๊ฐ ์๊ฐ๋ฌ๋ค.
์์ ์ฒ์์ด์ ๋ถ์ ๋ณด๋ ๊ฒ์ ์ถ์ฒ
๋ฐ์ํ
'CS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํต ์ ๋ ฌ(quick sort) (1) | 2020.09.24 |
---|---|
์ฝ์ ์ ๋ ฌ(insertion sort) (0) | 2020.09.23 |
์ ํ ์ ๋ ฌ(selection sort) (0) | 2020.09.22 |
๋น ์ค(Big O) - ์๊ฐ๋ณต์ก๋ (0) | 2020.09.09 |
์ต์ ์ ์ฅ ํธ๋ฆฌ(Minimum Spanning Tree) (2) | 2020.08.12 |