์ ํ ์ ๋ ฌ(Selection Sort) ์ด๋?
์ ํ์ ๋ ฌ์ ๊ฐ์ฅ ์๋ฆฌ๊ฐ ๊ฐ๋จํ๋ฉด์ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ๋ก ๋ดค์๋ ๊ฒฐ์ฝ ์ข์ ์๊ณ ๋ฆฌ์ฆ์ด๋ก ๋ณผ ์ ์๋ค.(์๊ฐ ๋ณต์ก๋๋ก ๋ณธ๋ค๋ฉด)
์๋ฆฌ๋ ๋ฐฐ์ด ์์์๊ฐ ๊ฐ์ฅ ํฐ/์์ ์๋ฅผ ๋ฐฐ์ด์ ๋์ผ๋ก ๋ณด๋ด๋ ์์ ์ ๊ณ์ ๋ฐ๋ณตํ๋ ๊ฒ์ด๋ค.
์ ํ์ ๋ ฌ์๋ ํฌ๊ฒ 2๊ฐ์ง๊ฐ ์กด์ฌํ๊ณ ์ ๋ ฌ ๋ชฉ์ ์ ๋ฐ๋ผ ๋ 2๊ฐ์ง๋ก ๋๋๊ฒ ๋๋ค.
์ต๋ ์ ํ ์ ๋ ฌ(์ค๋ฆ์ฐจ์)
: ํฐ ์๋ฅผ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ์์น์ํค๊ณ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ 1์ฉ ์ค์ด๋ ๋ฐฉ๋ฒ
์ต๋ ์ ํ ์ ๋ ฌ(๋ด๋ฆผ์ฐจ์)
: ์์ ์๋ฅผ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ์์น์ํค๊ณ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ 1์ฉ ์ค์ด๋ ๋ฐฉ๋ฒ
์ต์ ์ ํ ์ ๋ ฌ(์ค๋ฆ์ฐจ์)
: ์์ ์๋ฅผ ๊ฐ์ฅ ์ผ์ชฝ์ ์์น์ํค๊ณ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ 1์ฉ ๋๋ฆฌ๋ ๋ฐฉ๋ฒ
์ต์ ์ ํ ์ ๋ ฌ(๋ด๋ฆผ์ฐจ์)
: ํฐ ์๋ฅผ ๊ฐ์ฅ ์ผ์ชฝ์ ์์น์ํค๊ณ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ 1์ฉ ๋๋ฆฌ๋ ๋ฐฉ๋ฒ
์ด์ค ์ต๋ ์ ํ ์ ๋ ฌ (์ค๋ฆ์ฐจ์)
์ ์๋ก๋ค์ด ์ค๋ช
ํ๋ค๋ฉด A[n]
์ด๋ผ๋ ๋ฐฐ์ด์ ์
๋ ฅ์ด ๋ค์ด์จ๋ค๋ฉด ๋ฐฐ์ด A์ ์์ 1๋ถํฐ n ๊น์ง์ ์ ์ค
๊ฐ์ฅ ํฐ ์ A[k]
๋ฅผ ์ก์ ์ ์ผ ๋A[last]
์ผ๋ก ๋ณด๋ด๊ณ ๋ฐฐ์ด A์ ๋ ๋ฒ์งธ ์ธ๋ฑ์ค ๊น์ง ์ค๊ฒ ํ๋ ๊ฒ์ด๋ค.
์ด๋ฅผ pseudo ์ฝ๋๋ก ๋ณด๊ฒ๋๋ค๋ฉด.
selectionSort(a[], n){ ...1
for last <- n downto 2{ ... 2
A[1...last] ์ค ๊ฐ์ฅ ํฐ ์๋ฅผ ์ฐพ๊ณ A[k]๋ผ๊ณ ํ๋ค. ... 3
A[k] <-> A[last]; A[k]์ A[last]์ ๊ฐ์ ๊ตํ. ...4
}
}
-
1: ์ด ์๊ณ ๋ฆฌ์ฆ์์ ์ ๋ ฅ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ A[n]์ด๋ค.
-
2: ์ ํ์ ๋ ฌ์ ์ ๋ ฌ ๋ฐฉ์(๊ฐ์ฅ ํฐ/์์ ์๋ฅผ ๊ธฐ์ค์ผ๋ก)์ ์ ํํ ๋ ๊ฐ์ฅ ํฐ ์ A[last]๋ก ๊ธฐ์ค์ ์ ํํ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ ๋ฐ๋ณต์ ๋ฐฐ์ด์ ํฌ๊ธฐ n ๋ถํฐ ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ํ๋์ฉ ์ค์ด๋๋ ๋ฐ๋ณต์ ์์ํ๋ค.
-
3: A[1...last] ์ค ๊ฐ์ฅ ํฐ ์๋ฅผ A[k]๋ฅผ ์ ํ๊ณ ์ ๋ ฌ์ ํ ์ค๋น๋ฅผ ํ๋ค.
-
4: ๊ฐ์ฅ ํฐ ์ A[k]๋ฅผ ๊ฐ์ฅ ๋ง์ง๋ง ์ธ๋ฑ์ค๋ก ๋ณด๋ด๊ณ ๋ค์ for๋ฌธ์ผ๋ก ๊ฐ์ n์ ์๋ฅผ ์ค์ธ๋ค.
์ด ๊ณผ์ ์ ๋ฐ๋ณตํ๊ณ last๊ฐ 2 ์ฆ A[2]๊ฐ ๋๋ค๋ฉด A[1]๊ณผ ๋น๊ตํ์ฌ ์ ๋ ฌ์ ํ๊ณ ์ ํ์ ๋ ฌ์ ๋ง์น๋ค.
๋น์ฐํ ์ด์ผ๊ธฐ๊ฒ ์ง๋ง ๋ง์ฝ ์ pseudo ์ฝ๋์ ์ ๋ ฅ์ผ๋ก A[1]์ด ๋ค์ด์๋ค๋ฉด ์ด๋ค ์ผ์ด ์ผ์ด๋ ๊น?
for๋ฃจํ๋ last๊ฐ n์์ ์์ํด์ 2๊น์ง ๋ฐ๋ณต์ธ๋ฐ last๊ฐ 1์ผ๋ก 2๋ณด๋ค ์๋ค. ์ด ๋๋ for๋ฌธ์ ํ ๋ฒ๋ ์คํํ์ง ์๊ณ ์ง๋๊ฐ๋ค.
์ฆ A[1]๋ก ์ ๋ ฌ์ ์๊ตฌํ๋ฉด ์๋ฌด ์ผ๋ ํ์ง ์๊ณ ๋๋๊ฒ ๋๋ค.
์ ํ ์ ๋ ฌ(Selection Sort)์ ์๊ฐ ๋ณต์ก๋
์์ pseudo ์ฝ๋๋ก ๋ดค์ ๋ ์ ๋ ฅ ๋ฐฐ์ด A[n]์ด๋ฉด (n์ ์ ๋ ฅ์ ํฌ๊ธฐ)
for ๋ฐ๋ณต
-
- A[n] ๋ถํฐ A[2]๊น์ง ์ด n-1๋ฒ ๋ฐ๋ณตํ๋ค.
-
- A[1...n] ์ค ๊ฐ์ฅ ํฐ ์๋ฅผ ์ฐพ๊ธฐ ์ํด ์ด n-1๋ฒ์ ๋ฐ๋ณต์ด ํ์ํ๋ค.
๊ตํ
- ๊ฐ์ฅ ํฐ ์ A[k]์ A[last]๋ฅผ ๊ตํํ๋ ๊ฒ์ ๋จ์ํ ์์ ์๊ฐ์ด ๋ ๋ค.
๊ฒฐ๋ก : ∂[n^2]
Best | Avg | Worst |
---|---|---|
n^2 | n^2 | n^2 |
์ ํ์ ๋ ฌ์ ํน์ง
์ฅ์
- ๊ตฌํํ๊ธฐ ์ฝ๋ค.
- ์ ์ ์์ ๋ฐ์ดํฐ์์ ํจ๊ณผ์ ์ด๋ค.
๋จ์
- ๊ฐ์ ๋ ์ฝ๋์ ๊ฐ ์ฆ ์๊ฐ ๋์ผํ ๊ฒฝ์ฐ ์์ ๋ ์ ๋ ฌ์ด ๋ถ๊ฐ๋ฅํ๋ฏ๋ก ์์ ์ฑ์ด ๋จ์ด์ง๋ค.
- ๋ฐ์ดํฐ๊ฐ ๋ง์์ง ์๋ก ํจ์จ์ฑ์ด ๋จ์ด์ง๋ค.
์ ํ ์ ๋ ฌ(Selection Sort)์ ์๋ฐ ์ฝ๋
'๐ป Computer Science > - Data Structure, Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ-์ด๋ก ] ์ด์ง ๊ฒ์ ํธ๋ฆฌ(Binary Search Tree) (0) | 2019.11.23 |
---|---|
[์๊ณ ๋ฆฌ์ฆ-์ด๋ก ] ํต ์ ๋ ฌ (Quick Sort) (0) | 2019.11.23 |
[์๊ณ ๋ฆฌ์ฆ-์ด๋ก ] ๋ณํฉ ์ ๋ ฌ(Merge Sort) (0) | 2019.11.23 |
[์๊ณ ๋ฆฌ์ฆ-์ด๋ก ] ์ฝ์ ์ ๋ ฌ (Insertion Sort) (0) | 2019.11.23 |
[์๊ณ ๋ฆฌ์ฆ-์ด๋ก ] ๋ฒ๋ธ ์ ๋ ฌ (Bubble Sort) (0) | 2019.11.23 |
๋๊ธ