ํต ์ํธ(Quick Sort)๋?
ํต ์ ๋ ฌ์ ํ๊ท ์ ์ผ๋ก ๊ฐ์ฅ ์ข์ ์ฑ๋ฅ์ ๊ฐ์ ธ ํ์ฅ์์ ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
๋ฐ๋ก ์๋ก ์ค๋ช ์ ํ์๋ฉด
์ ๋ ฌํ ๋ฐฐ์ด A={31,11,2,6,9}
๊ฐ ์ฃผ์ด์ง๋ค.
์ด ๋ ๊ธฐ์ค ์์๋ฅผ ์ค์ฌ์ผ๋ก ๊ทธ ๊ฐ๋ณด๋ค ํฐ ์์๋ ๋ค์, ์์ ์์๋ ์์ ๋ฐฐ์น๋ฅผ ํ๋ ์์ผ๋ก ์ ๋ ฌ์ด ์ด๋ฃจ์ด์ง๋ค.
-
๊ธฐ์ค ์์๋ฅผ ์ก๋๋ค.
-
๊ธฐ์ค ์์์ ์ผ์ชฝ์ ๊ธฐ์ค ์์๋ณด๋ค ์์ ๊ฐ, ์ค๋ฅธ์ชฝ์ ๊ธฐ์ค ์์๋ณด๋ค ํฐ ๊ฐ.
-
์ผ์ชฝ์ ๋ํด์๋ ์ฌ๊ทํธ์ถ์ ์คํํ๋ค. ์ค๋ฅธ์ชฝ์ ๋ํด์๋ ์ฌ๊ทํธ์ถ์ ์คํํ๋ค.
1๋ผ์ด๋
๊ธฐ์ค ์์๋ฅผ ์ก๋๋ค
-> ๊ธฐ์ค์์: 9 -> ๊ธฐ์ค์์๋ฅผ ๊ธฐ์ค์ผ๋ก A[0]๋ถํฐ ๊ฐ์ ๋น๊ตํ๋ฉฐ ์ฌ๋ฐฐ์น ํ๋ค.
->
A={2, 6, 9, 31, 11};
2๋ผ์ด๋
๊ธฐ์ค ์์๋ฅผ ์ก๋๋ค
-> ๊ธฐ์ค์์: 11 -> ๊ธฐ์ค์์๋ฅผ ๊ธฐ์ค์ผ๋ก A[0]๋ถํฐ ๊ฐ์ ๋น๊ตํ๋ฉฐ ์ฌ๋ฐฐ์น ํ๋ค.
->
A={2, 6, 9, 11, 31};
์ด ๊ณผ์ ์ ๋ฐ๋ณตํ๊ณ ๊ธฐ์ค ์์๊ฐ ๋ฐฐ์ด์ ์์๋ฅผ ํ๋ฒ์ฉ ํ๊ณ ์ง๋๊ฐ๋ฉด ๋๋๋ค.
quickSort(A[], p, r){
if(p<r) then {
q <- partition(A, p, r);
quickSort(A,p,q-1);
quickSort(A,q+1,r);
}
}
partition(A[], p, r){
x <- A[r];
i <- p - 1
for j <- p to r-1
if(A[j] <= x) then A[++i] <-> A[j];
A[i+1] <-> A[r];
return i+1;
}
ํต ์ํธ(Quick Sort)์ ์๊ฐ ๋ณต์ก๋
ํต ์ํธ๋ ๋ณด๋ค์ถ์ด ์ฌ๊ทํธ์ถ์ ํน์ฑ( O(log n))์ ๊ฐ๊ณ ์๋ค.
ํต ์ํธ(Quick Sort)์ ํน์ง
์ฅ์
-
์๋๊ฐ ๋น ๋ฅด๋ค
-
์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์๋ก ํ์ง ์๋๋ค.
๋จ์
- ์ ๋ ฌ๋ ๋ฆฌ์คํธ์ ๋ํด์๋ ํต ์ ๋ ฌ์ ๋ถ๊ท ํ ๋ถํ ์ ์ํด ์คํ๋ ค ์ํ์๊ฐ์ด ๋ ๋ง์ด ๊ฑธ๋ฆฐ๋ค.
ํต ์ํธ(Quick Sort์ ์๋ฐ ์ฝ๋)
'๐ป Computer Science > - Data Structure, Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ-์ด๋ก ] ๋ ๋ ๋ธ๋ ํธ๋ฆฌ(Red-Black Tree) (0) | 2019.11.23 |
---|---|
[์๊ณ ๋ฆฌ์ฆ-์ด๋ก ] ์ด์ง ๊ฒ์ ํธ๋ฆฌ(Binary Search Tree) (0) | 2019.11.23 |
[์๊ณ ๋ฆฌ์ฆ-์ด๋ก ] ๋ณํฉ ์ ๋ ฌ(Merge Sort) (0) | 2019.11.23 |
[์๊ณ ๋ฆฌ์ฆ-์ด๋ก ] ์ฝ์ ์ ๋ ฌ (Insertion Sort) (0) | 2019.11.23 |
[์๊ณ ๋ฆฌ์ฆ-์ด๋ก ] ๋ฒ๋ธ ์ ๋ ฌ (Bubble Sort) (0) | 2019.11.23 |
๋๊ธ