๐ฉ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ ๋ฐฉํฅ์ผ๋ก ์ธ์ ํ ๋ ๊ฐ์ ์ซ์๋ฅผ ๋น๊ตํด ๊ตํํ์ฌ ์ ๋ ฌ
์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ๋๊น์ง ๋ค์ ๋์์ ๋ฐ๋ณตํ๋ค.
๋ฐ๋ ๋ฐฉํฅ์ผ๋ก๋ ๊ฐ๋ฅ
BubbleSort(A[ ], n) {
for (i=0; i< n-1; i++) // ๋จ๊ณ: (n-1)๋ฒ ๋ฐ๋ณต
for (j=0; j < n-1; j++) // ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์งํํ๋ ๊ฒฝ์ฐ
if (A[j] > A[j+1]) // ‘์ผ์ชฝ ๋ฐ์ดํฐ >์ค๋ฅธ์ชฝ ๋ฐ์ดํฐ’์ด๋ฉด
A[j]์ A[j+1]์ ์๋ฆฌ๋ฐ๊ฟ;
return (A);
}
๐ฉ ์๊ฐ ๋ณต์ก๋
for๋ฌธ i (์ธ๋ถ ๋ฐ๋ณต๋ฌธ) : 0 ~ (n-2) ๐ (n-1)ํ
for๋ฌธ j (๋ด๋ถ ๋ฐ๋ณต๋ฌธ) : ๋์ผ ๐ (n-1)ํ
์ด ๋น๊ต ํ์ = O(n^2)
๐ฉ ์ฑ๋ฅ
์ ํ ์ ๋ ฌ์ ๋นํด ๋ฐ์ดํฐ ๊ตํ์ด ๋ง์ด ๋ฐ์. ์ ํ ์ ๋ ฌ๋ณด๋ค ๋นํจ์จ์
๐ ๊ฐ ๋ฃจํ์ ๋ฐ๋ณต ํ์๋ฅผ ์ค์ฌ ๊ฐ์ ๊ฐ๋ฅํ๋ค.
๐ ๊ฐ์ ๋ ๋ฒ๋ธ ์ ๋ ฌ
์ธ๋ถ ๋ฐ๋ณต๋ฌธ = ์ฒ๋ฆฌ ๋จ๊ณ์ ์
์๋ฆฌ๋ฐ๊ฟ์ด ๋ฐ์ํ์ง ์์ผ๋ฉด ์ด๋ฏธ ์ ๋ ฌ๋ ์ํ์ด๋ฏ๋ก ์ดํ์ ์ฒ๋ฆฌ ๋จ๊ณ๋ฅผ ์ํํ์ง ์๊ณ ์ข ๋ฃ
๋ด๋ถ ๋ฐ๋ณต๋ฌธ = ์ธ์ ํ ๋ ๋ฐ์ดํฐ์ ๋น๊ต ํ์
๊ฐ ๋จ๊ณ์์ ๋ฌด์กฐ๊ฑด ์ค๋ฅธ์ชฝ/์ผ์ชฝ ๋๊น์ง ์ด๋ํ๋ฉด์ ์ธ์ ํ ๋ ๋ฐ์ดํฐ์ ๋น๊ต๊ฐ ๋ถํ์
๐ ์ด๋ฏธ ์ ์๋ฆฌ๋ฅผ ์ก์ ๋ฐ์ดํฐ์ ๋ํด์๋ ๋น๊ต๋ฅผ ์ํํ์ง ์๋๋ก ํ๋ค.
Advanced_BubbleSort(A[ ], n) {
for (i=0; i< n-1; i++) { // ๋จ๊ณ: 0, 1, โฏ, (n-2)
Sorted= TRUE;// ์ด๋ฏธ ์ ๋ ฌ๋ ์ํ๋ผ๊ณ ๊ฐ์
for (j=0; j < (n-1)-i; j++) // ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์งํํ๋ ๊ฒฝ์ฐ
if (A[j] > A[j+1]) {
A[j]์ A[j+1]์ ์๋ฆฌ๋ฐ๊ฟ;
Sorted= FALSE;// ์๋ฆฌ๋ฐ๊ฟ ๋ฐ์ → ๋ฏธ์ ๋ ฌ ์ํ
}
if (Sorted== TRUE) break;// ์ด๋ฏธ ์ ๋ ฌ๋ ์ํ์ด๋ฏ๋ก ์ข
๋ฃ
}
return (A);
}
๐ฉ ๊ฐ์ ๋ ๋ฒ๋ธ ์ ๋ ฌ์ ์๊ฐ๋ณต์ก๋
O(n^2)๋ก ๋์ผ
cf. ์ญ์์ผ๋ก ์ ๋ ฌ๋ ๊ฒฝ์ฐ(์ต์ ์ ๊ฒฝ์ฐ) : O(n^2)
cf. ์ํ๋ ์์๋ก ์ด๋ฏธ ์ ๋ ฌ๋ ๊ฒฝ์ฐ : O(n)
'๐ฉโ๐ป ํ๋ก๊ทธ๋๋ฐ > ๐ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ธ ์ ๋ ฌ(Shell Sort) (0) | 2024.04.12 |
---|---|
์ฝ์ ์ ๋ ฌ(Insertion Sort) (1) | 2024.04.12 |
์ ํ ์ ๋ ฌ(Selection Sort) (0) | 2024.04.12 |
์ฌ๊ท(์ํ) ์๊ณ ๋ฆฌ์ฆ (0) | 2024.03.27 |
๋์ ๊ณํ๋ฒ(dynamic programming) feat. ํผ๋ณด๋์น ์์ด (0) | 2024.03.27 |