2021. 9. 8. 09:00ใ์ฝ๋ฉ ํ ์คํธ ์ค๋น/์๊ณ ๋ฆฌ์ฆ
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค.
์ค๋์ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ณ ๋ฆฌ์ฆ์์ Selection Sort์ ๋ํด ๊ณต๋ถ ํด ๋ณด๋๋ก ํ๋ ๊ฒ์ด์์.
์์ค ์ฝ๋์ ๋ํด์ ํ์ธ ํ๊ณ ์ถ์ผ์ ๋ถ๋ค๊ป์๋ ์ฃผ๋ํ๋์ Git hub์ ๊ด์ฌ์ ์ฃผ์ธ์!
๐ Selection Sort (์ ํ ์ ๋ ฌ)๋?
์ ํ ์ ๋ ฌ์ ์ฃผ์ด์ง Data ์ค ์ต์๊ฐ์ ์ฐพ๊ฒ ๋๋ ๊ฒ์ด์์.
๊ทธ๋ฐ ๋ค ํด๋น ์ต์๊ฐ์ ๋งจ ์์ ์์นํ ๊ฐ๊ณผ ์๋ฆฌ๋ฅผ ๋ฐ๊พธ๊ฒ ๋๋ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ๋งจ ์์ ์์น๋ฅผ ๋บ ๋๋จธ์ง Data๋ฅผ ๋์ผํ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ๋ณตํ๋ ๊ฒ์ด์์.
์ด๋ฏธ ์ต์๊ฐ์ผ๋ก ์๋ฆฌ๊ฐ ์ด๋ ๋ ๊ฒ๋ค์ ๋ค์ ์๋ฆฌ ์ด๋์ ํ ํ์๊ฐ ์์ผ๋ ์ ๋ ฌ์ ์๋ n -1 ๋งํผ ์ค์ด๋๋ ๊ฒ์ด์์.
์ฐธ๊ณ ์ฌ์ดํธ : https://visualgo.net/ko/sorting
๐ ํ๊ธฐ ์๋ฃ
๐ ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ
๐ Python
for stand in range(len(data_list) - 1 # ๋ก ๋ฐ๋ณต
lowest = stand # ๋ก ์ ์ธ ๋ฐ ์ด๊ธฐํ
for num in range(stand, len(data_list) # stand ๋ถํฐ ๋ฐ์ดํฐ ๊ธธ์ด (๋ฐฐ์ด์ ๊ธธ์ด) - 1๊น์ง ๋ฐ๋ณต
๋ด๋ถ ๋ฐ๋ณต๋ฌธ ์์์ data_list[lowest] > data_list[num] # ์ด๋ฉด,
lowest = num # ๋น๊ต ๋์ ๊ธฐ์ค Index์ ๋น๊ต ๋์ Index๋ฅผ ๋ฃ์ด์ค๋ค.
data_list[num], data_list[lowest] data_list[lowest], data_list[num] # ํด๋น ์์น์ ๊ฐ๋ค์ ์์น ์ด๋ํ๋ค.
๐ ๋น ์ค ํ๊ธฐ๋ฒ์ ์ํ ์๊ฐ ๋ณต์ก๋
๋ฐ๋ณต๋ฌธ์ด ๋๊ฐ ์ด๊ณ , ๊ทธ ์์์ data_list์ ๊ธธ์ด๊ฐ ์ํฅ์ ์ฃผ๊ธฐ์ O($n^2$) ์ธ ๊ฒ์ด์์.
์กฐ๊ธ ๋ ๊น๊ฒ ์์ธํ๊ฒ ๊ณ์ฐ์ ํ๋ค๋ฉด $\frac { n * (n - 1)}{ 2 }$ ์ด๋๋๋ค!
์ฃผ๋ํ๋์ ๊ธ์ด ๋ง์์ ๋์
จ๋์? ๊ตฌ๋
๊ณผ ๊ณต๊ฐ! ๊ทธ๋ฆฌ๊ณ , ๋๊ธ์ ์ฃผ๋ํ๋์๊ฒ ๋ง์ ํ์ด ๋ฉ๋๋ค
'์ฝ๋ฉ ํ ์คํธ ์ค๋น > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] ๋ณํฉ ์ ๋ ฌ (merge sort) (0) | 2021.09.09 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] Dynamic Programming(๋์ ๊ณํ๋ฒ)& Divide and Conquer(๋ถํ ์ ๋ณต) (0) | 2021.09.09 |
[์๊ณ ๋ฆฌ์ฆ] 01. ๋ฒ๋ธ์ ๋ ฌ (0) | 2021.09.07 |
[์๊ณ ๋ฆฌ์ฆ] 00. ์๊ณ ๋ฆฌ์ฆ ์ฐ์ต ๋ฐฉ๋ฒ (0) | 2021.09.06 |
[์๊ณ ๋ฆฌ์ฆ] ์๊ฐ ๋ณต์ก๋ (0) | 2021.08.16 |