[๐Ÿ“—c์–ธ์–ด ์‰ฝ๊ฒŒ ํ’€์–ด์“ด ์ž๋ฃŒ๊ตฌ์กฐ12] ์ •๋ ฌ

์•ˆ์ง€์ˆ˜ยท2023๋…„ 2์›” 16์ผ
0

์ •๋ ฌ์ด๋ž€?

: ํฌ๊ธฐ์ˆœ์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์ด๋‚˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ (๋ณดํ†ต '๋ ˆ์ฝ”๋“œ'๋“ค์„ ์ •๋ ฌํ•จ)

  • key: ๋ ˆ์ฝ”๋“œ์™€ ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ตฌ๋ณ„ ํ•ด์ฃผ๋Š” ๊ฐ’
    & ์•ˆ์ •์„ฑ์— ๋”ฐ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜
  • ์•ˆ์ •์„ฑ: ๊ฐ™์€ ํ‚ค ๊ฐ’์„ ๊ฐ™๋Š” ๋ ˆ์ฝ”๋“œ๋“ค์ด, ์ •๋ ฌ ํ›„์—๋„ ๊ทธ ์œ„์น˜๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ
  • ์•ˆ์ •์„ฑ ์ถฉ์กฑํ•˜๋Š” ์ •๋ ฌ: ์‚ฝ์ž… ์ •๋ ฌ, ๋ฒ„๋ธ” ์ •๋ ฌ, ํ•ฉ๋ณ‘ ์ •๋ ฌ

๐Ÿ‘‘ ์„ ํƒ ์ •๋ ฌ

  1. 2๊ฐœ์˜ ๋ฆฌ์ŠคํŠธ: ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž ์„ ํƒํ•ด์„œ ์˜ค๋ฅธ์ชฝ ๋ฆฌ์ŠคํŠธ์—์„œ ์™ผ์ชฝ ๋ฆฌ์ŠคํŠธ๋กœ ์ด๋™
  2. ์ œ์ž๋ฆฌ ์ •๋ ฌ: ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๋ฅผ ์ฐพ์•„์„œ ๋งจ ์•ž์˜ ์ธ๋ฑ์Šค์™€ ๊ตํ™˜ (๊ทธ ๋‹ค์Œ์—๋Š” ๋‘ ๋ฒˆ์งธ ์ธ๋ฑ์Šค์™€ ๊ตํ™˜,,์„ธ๋ฒˆ์งธ...)
#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์˜ ๊ฐ’์„ ์ค„์—ฌ๊ฐ€๋ฉฐ)- ๋ถ€๋ถ„๋ฆฌ์ŠคํŠธ๋Š” ์‚ฝ์ž… ์ •๋ ฌ

  • ๋ถ€๋ถ„๋ฆฌ์ŠคํŠธ์˜ ๊ฐฏ์ˆ˜๋Š” 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๊ฐœ์˜ ๊ท ๋“ฑํ•œ ํฌ๊ธฐ๋กœ ๋ถ„ํ• ํ•˜๊ณ , ๋ถ€๋ถ„๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌํ•œ ํ›„ ํ•ฉํ•จ (๋ถ„ํ• ์ •๋ณต ๋ฐฉ๋ฒ•- ์ˆœํ™˜ํ˜ธ์ถœ ์ด์šฉ)

  • ์‹ค์งˆ์ ์ธ ์ •๋ ฌ์€ ํ•ฉ๋ณ‘ ๋‹จ๊ณ„์—์„œ ์ด๋ฃจ์–ด์ง

๐Ÿ‘‘ ํ€ต ์ •๋ ฌ

: ํ”ผ๋ฒ—์„ ๊ธฐ์ค€์œผ๋กœ ํ•˜๋Š” ๋ถ„ํ•  ์ •๋ณต๋ฒ• (์ž‘์€ ๊ฑฐ ์™ผ์ชฝ์œผ๋กœ, ํฐ ๊ฑฐ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ ํ›„, ๋‹ค์‹œ ํ”ผ๋ฒ— ์ •ํ•ด์„œ)

๐Ÿ‘‘ ํžˆํ”„ ์ •๋ ฌ

: ์ตœ์†Œ ํžˆํ”„ (์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ)๋ฅผ ์ด์šฉํ•˜์—ฌ, ์ตœ์†Ÿ๊ฐ’์„ ๋จผ์ € ์‚ญ์ œํ•˜์—ฌ ๋งจ ์•ž์— ์ •๋ ฌ

๐Ÿ‘‘ ๊ธฐ์ˆ˜ ์ •๋ ฌ

: ๋ ˆ์ฝ”๋“œ๋“ค์„ ๋น„๊ตํ•˜์ง€ ์•Š๊ณ , ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ†ตํ•ด์„œ ์ •๋ ฌ. (๋ฒ„ํ‚ท ๋งŒ๋“ค์–ด์„œ ๋„ฃ๊ธฐ)

  • ์ •์ˆ˜ ์ •๋ ฌ์—์„œ ์œ ๋ฆฌ (2์ž๋ฆฌ ์ˆ˜์ธ ๊ฒฝ์šฐ, ์ผ์˜ ์ž๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋จผ์ € ๋ฒ„ํ‚ท์— ๋„ฃ์€ ํ›„ ์ˆœ์„œ๋Œ€๋กœ ๋นผ์„œ ์ •๋ ฌ-> ์‹ญ์˜ ์ž๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฒ„ํ‚ท์— ๋„ฃ์€ ํ›„, ์ˆœ์„œ๋Œ€๋กœ ๋นผ์„œ ์ •๋ ฌ)
  • ๊ฐ๊ฐ์˜ ๋ฒ„ํ‚ท์€ ํ๋กœ

๐Ÿ‘‘ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋น„๊ต

!! ๊ฐ ๊ฒฝ์šฐ์— ๋งž๊ฒŒ ๊ฐ€์žฅ ํšจ์œจ์ ์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•จ!! (ํšจ์œจ์„ฑ: ๋น„๊ต ํšŸ์ˆ˜, ์ด๋™ ํšŸ์ˆ˜- ์ž๋ฃŒ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์„์ˆ˜๋ก ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๋” ์ค‘์š”)
!! ํ€ต ์ •๋ ฌ์ด ๊ฐ€์žฅ ๋น ๋ฆ„

โญ• TIL (Today I Learned)

& ์ •๋ ฌ์€ ๋ ˆ์ฝ”๋“œ๋“ค์„ ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ์ž„. ๊ฐ๊ฐ์˜ ๊ฒฝ์šฐ์— ๋งž๋Š” ํšจ์œจ์„ฑ์ด ๋†’์€ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•จ. ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ข…๋ฅ˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์žˆ๋‹ค.
1. ์„ ํƒ ์ •๋ ฌ: ์ตœ์†Ÿ๊ฐ’์„ ์„ ํƒํ•˜์—ฌ ์•ž์˜ ์ธ๋ฑ์Šค๋กœ ๊ฐ€์ ธ์™€์„œ ๋„ฃ๋Š” ๊ฒƒ (ํ•˜๋‚˜ ์”ฉ ๋’ค๋กœ ๋ฐ€๊ธฐ)
2. ์‚ฝ์ž… ์ •๋ ฌ: ๋‘๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ์•ž์˜ ์š”์†Œ๋“ค๊ณผ ๋น„๊ตํ•˜๋ฉฐ ์ œ์ž๋ฆฌ์— ๋„ฃ๋Š” ๊ฒƒ (์ตœ์†Ÿ๊ฐ’๋ถ€ํ„ฐ ์ •๋ ฌ ์™„์„ฑ)
3. ๋ฒ„๋ธ” ์ •๋ ฌ: ์˜†์˜ ์š”์†Œ๋“ค๊ณผ ๋น„๊ตํ•ด๊ฐ€๋ฉฐ ํฐ ์ˆ˜๋ฅผ ์˜ค๋ฅธ ์ชฝ์œผ๋กœ ์ด๋™ (ํฐ ์ˆ˜๋ถ€ํ„ฐ ์ •๋ ฌ ์™„์„ฑ)
4. ์‰˜ ์ •๋ ฌ: ๋ถ€๋ถ„๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด, ๊ฐ ๋ถ€๋ถ„๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฝ์ž… ์ •๋ ฌ ํ›„ ํ•ฉ์นจ (gap์— ๋”ฐ๋ผ ๋ถ€๋ถ„๋ฆฌ์ŠคํŠธ์˜ ๊ฐฏ์ˆ˜ ์ •ํ•ด์ง) gap์„ ์ค„์—ฌ๊ฐ€๋ฉฐ 1์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต
5. ํ•ฉ๋ณ‘ ์ •๋ ฌ: ๋ถ„ํ• ์ •๋ณต๋ฒ•์œผ๋กœ(๋ณดํ†ต ๊ฐ€์šด๋ฐ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ํ•จ), ์ „์ฒด๋ฆฌ์ŠคํŠธ๋ฅผ ๋ถ€๋ถ„๋ฆฌ์ŠคํŠธ๋กœ ๋ถ„ํ• ํ•˜์—ฌ, ๊ฐ ๋ถ€๋ถ„์„ ์ •๋ณต ํ›„-์ˆœํ™˜ํ˜ธ์ถœ, ํ•ฉ๋ณ‘ ํ•จ(ํ•ฉ๋ณ‘ ๊ณผ์ •์—์„œ ์ •๋ ฌ ์ผ์–ด๋‚จ)
6. ํ€ต ์ •๋ ฌ: ํ”ผ๋ฒ—์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์€ ๊ฒƒ์€ ์™ผ์ชฝ, ํฐ ๊ฒƒ์€ ์˜ค๋ฅธ์ชฝ์— ์‚ฝ์ž… (๊ทธ ๊ฐ๊ฐ์„ ๋˜ ์ˆœํ™˜ํ˜ธ์ถœ์„ ํ†ตํ•ด ์ •๋ ฌ)
7. ํžˆํ”„ ์ •๋ ฌ: ์ตœ์†Œ ํžˆํ”„์˜ ์‚ญ์ œ ์—ฐ์‚ฐ์„ ํ†ตํ•ด์„œ, ์•ž๋ถ€ํ„ฐ ์ •๋ ฌ
8. ๊ธฐ์ˆ˜ ์ •๋ ฌ: ๋น„๊ต๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ๋ฒ„ํ‚ท์„ ์ด์šฉํ•ด, ์ž๋ฃŒ๋“ค์„ ์ €์žฅํ•˜๊ณ  ์ˆœ์„œ๋Œ€๋กœ ๋นผ๋‚ด์–ด ์ •๋ ฌ (์ •์ˆ˜์˜ ์ •๋ ฌ์— ์œ ๋ฆฌ)

profile
์ง€์ˆ˜์˜ ์ทจ์ค€, ๊ฐœ๋ฐœ์ผ๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€