: ํฌ๊ธฐ์์ผ๋ก ์ค๋ฆ์ฐจ์์ด๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋์ดํ๋ ๊ฒ (๋ณดํต '๋ ์ฝ๋'๋ค์ ์ ๋ ฌํจ)
#define SWAP(x, y, t)((t)=(x),(x)=(y), (y)=(t))
void selection_sort(int list[], int n)
{
int i, j, least, temp;
for (i = 0; i < n - 1;i++) {
least = i;
for (j = i + 1;j < n;j++) {
if (list[j] < list[least]) least = j;
}
SWAP(list[i], list[least], temp);
}
}
: ๋๋ฒ์งธ ๊ฐ๋ถํฐ ์์ ๊ฐ๋ค๊ณผ ๋น๊ตํ๋ฉฐ, key๊ฐ์ด ๋ ์์ ๊ฒฝ์ฐ์๋ ๊ทธ ์์น์ ์๋ ๊ฒ๋ค์ ํ ์นธ์ฉ ๋ค๋ก ๋ฐ๋ฉฐ, ์ ์ ํ ์์น์ ์ฝ์
#define SWAP(x, y, t)((t)=(x),(x)=(y), (y)=(t))
void insertion_sort(int list[], int n) {
int i, j, key;
for (i = 1;i < n;i++) { //์ฒซ๋ฒ์งธ ๊บผ๋ ์ ๋ ฌ๋์ด์๋ค๊ณ ๊ฐ์
key = list[i];
for (j = i - 1;j >= 0 && list[j] > key;j--) {
list[j + 1] = list[j];
}
list[j + 1] = key;
}
}
: ์ธ์ ํ 2๊ฐ์ ๋ ์ฝ๋๋ค ๋น๊ตํ์ฌ ํฐ ๊ฒ์ด ๋ค๋ก ๊ฐ๋๋ก
#define SWAP(x, y, t)((t)=(x),(x)=(y), (y)=(t))
void bubble_sort(int list[], int n) {
int i, j, temp;
for (i = n - 1;i > 0;i--) {
for (j = 0;j < i;j++) {
if (list[j] > list[j + 1]) {
SWAP(list[j], list[j + 1], temp);
}
}
}
}
: ๋ถ๋ถ๋ฆฌ์คํธ๋ก ๋๋์ด, ๊ฐ๊ฐ ์ ๋ ฌ ํ ํฉ์นจ. ๋ง์ด ์ด๋ํด์ผํ๋ ์ฝ์ ์ ๋ ฌ ๋ณด์ (gap์ ๊ฐ์ ์ค์ฌ๊ฐ๋ฉฐ)- ๋ถ๋ถ๋ฆฌ์คํธ๋ ์ฝ์ ์ ๋ ฌ
#define SWAP(x, y, t)((t)=(x),(x)=(y), (y)=(t))
void inc_insertion_sort(int list[], int first, int last, int gap) {
int i, j, key;
for (i = first + gap;i <= last;i = i + gap) { //๋ถ๋ถ ๋ฆฌ์คํธ์ ์ ๋ ฌ(์ฝ์
์ ๋ ฌ)
key = list[i];
for (j = i - gap;j >= first&&key[list];j = j - gap)
list[j + gap] = list[j];
list[j + gap] = key;
}
}
void shell_sort(int list[], int n) {
int i, gap;
for (gap = n / 2;gap > 0;gap = gap / 2) { //๋ค์ gap์ผ๋ก ๋์ด๊ฐ
if ((gap % 2) == 0) gap++;
for (i = 0;i < gap;i++) //๊ฐ gap์์ ๋ค์ ๋ถ๋ถ๋ฆฌ์คํธ๋ก ๋์ด๊ฐ
inc_insertion_sort(list, i, n - 1, gap);
}
}
: ํ๋์ ๋ฆฌ์คํธ๋ฅผ 2๊ฐ์ ๊ท ๋ฑํ ํฌ๊ธฐ๋ก ๋ถํ ํ๊ณ , ๋ถ๋ถ๋ฆฌ์คํธ๋ฅผ ์ ๋ ฌํ ํ ํฉํจ (๋ถํ ์ ๋ณต ๋ฐฉ๋ฒ- ์ํํธ์ถ ์ด์ฉ)
: ํผ๋ฒ์ ๊ธฐ์ค์ผ๋ก ํ๋ ๋ถํ ์ ๋ณต๋ฒ (์์ ๊ฑฐ ์ผ์ชฝ์ผ๋ก, ํฐ ๊ฑฐ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ ํ, ๋ค์ ํผ๋ฒ ์ ํด์)
: ์ต์ ํํ (์์ ์ด์ง ํธ๋ฆฌ)๋ฅผ ์ด์ฉํ์ฌ, ์ต์๊ฐ์ ๋จผ์ ์ญ์ ํ์ฌ ๋งจ ์์ ์ ๋ ฌ
: ๋ ์ฝ๋๋ค์ ๋น๊ตํ์ง ์๊ณ , ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํตํด์ ์ ๋ ฌ. (๋ฒํท ๋ง๋ค์ด์ ๋ฃ๊ธฐ)
!! ๊ฐ ๊ฒฝ์ฐ์ ๋ง๊ฒ ๊ฐ์ฅ ํจ์จ์ ์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ ๊ฒ์ด ์ค์ํจ!! (ํจ์จ์ฑ: ๋น๊ต ํ์, ์ด๋ ํ์- ์๋ฃ์ ๊ฐ์๊ฐ ๋ง์์๋ก ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉํ๋ ๊ฒ ๋ ์ค์)
!! ํต ์ ๋ ฌ์ด ๊ฐ์ฅ ๋น ๋ฆ
& ์ ๋ ฌ์ ๋ ์ฝ๋๋ค์ ์์์ ๋ฐ๋ผ์ ์ ๋ ฌํ๋ ๊ฒ์. ๊ฐ๊ฐ์ ๊ฒฝ์ฐ์ ๋ง๋ ํจ์จ์ฑ์ด ๋์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ ๊ฒ์ด ์ค์ํจ. ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ข
๋ฅ๋ ์ฌ๋ฌ ๊ฐ๊ฐ ์๋ค.
1. ์ ํ ์ ๋ ฌ: ์ต์๊ฐ์ ์ ํํ์ฌ ์์ ์ธ๋ฑ์ค๋ก ๊ฐ์ ธ์์ ๋ฃ๋ ๊ฒ (ํ๋ ์ฉ ๋ค๋ก ๋ฐ๊ธฐ)
2. ์ฝ์
์ ๋ ฌ: ๋๋ฒ์งธ ์์๋ถํฐ ์์ ์์๋ค๊ณผ ๋น๊ตํ๋ฉฐ ์ ์๋ฆฌ์ ๋ฃ๋ ๊ฒ (์ต์๊ฐ๋ถํฐ ์ ๋ ฌ ์์ฑ)
3. ๋ฒ๋ธ ์ ๋ ฌ: ์์ ์์๋ค๊ณผ ๋น๊ตํด๊ฐ๋ฉฐ ํฐ ์๋ฅผ ์ค๋ฅธ ์ชฝ์ผ๋ก ์ด๋ (ํฐ ์๋ถํฐ ์ ๋ ฌ ์์ฑ)
4. ์ ์ ๋ ฌ: ๋ถ๋ถ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด, ๊ฐ ๋ถ๋ถ๋ฆฌ์คํธ๋ฅผ ์ฝ์
์ ๋ ฌ ํ ํฉ์นจ (gap์ ๋ฐ๋ผ ๋ถ๋ถ๋ฆฌ์คํธ์ ๊ฐฏ์ ์ ํด์ง) gap์ ์ค์ฌ๊ฐ๋ฉฐ 1์ด ๋ ๋๊น์ง ๋ฐ๋ณต
5. ํฉ๋ณ ์ ๋ ฌ: ๋ถํ ์ ๋ณต๋ฒ์ผ๋ก(๋ณดํต ๊ฐ์ด๋ฐ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ํจ), ์ ์ฒด๋ฆฌ์คํธ๋ฅผ ๋ถ๋ถ๋ฆฌ์คํธ๋ก ๋ถํ ํ์ฌ, ๊ฐ ๋ถ๋ถ์ ์ ๋ณต ํ-์ํํธ์ถ, ํฉ๋ณ ํจ(ํฉ๋ณ ๊ณผ์ ์์ ์ ๋ ฌ ์ผ์ด๋จ)
6. ํต ์ ๋ ฌ: ํผ๋ฒ์ ๊ธฐ์ค์ผ๋ก ์์ ๊ฒ์ ์ผ์ชฝ, ํฐ ๊ฒ์ ์ค๋ฅธ์ชฝ์ ์ฝ์
(๊ทธ ๊ฐ๊ฐ์ ๋ ์ํํธ์ถ์ ํตํด ์ ๋ ฌ)
7. ํํ ์ ๋ ฌ: ์ต์ ํํ์ ์ญ์ ์ฐ์ฐ์ ํตํด์, ์๋ถํฐ ์ ๋ ฌ
8. ๊ธฐ์ ์ ๋ ฌ: ๋น๊ต๋ฅผ ํ๋ ๊ฒ์ด ์๋, ๋ฒํท์ ์ด์ฉํด, ์๋ฃ๋ค์ ์ ์ฅํ๊ณ ์์๋๋ก ๋นผ๋ด์ด ์ ๋ ฌ (์ ์์ ์ ๋ ฌ์ ์ ๋ฆฌ)