๋ฐ˜๊ฐ€์›Œ์š”! ํ—ˆ๋ธŒ์ž…๋‹ˆ๋‹ค!

์ €๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ํ˜„๋Œ€ ์—ฐ๊ธˆ์ˆ ์‚ฌ๋ผ๊ณ  ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์„ ๊ณต๋ถ€ํ•˜๋ฉฐ ๋Š๋‚€ ์ ๋“ค๊ณผ ์ด์•ผ๊ธฐ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค.

์ž๋ฃŒ๊ตฌ์กฐ

Selection Sort ์„ ํƒ์ •๋ ฌ

mmin.h 2020. 8. 4. 10:22

์•ˆ๋…•ํ•˜์„ธ์š”. ์ฃผ์ธ์žฅ H์ž…๋‹ˆ๋‹ค. 

์˜ค๋Š˜์€ ์„ ํƒ์ •๋ ฌ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ๊ฑด๋ฐ์š”. 

1~10 ๊นŒ์ง€ ๋ฌด์งˆ์„œํ•œ ์ˆซ์ž๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด 

์„ ํƒ์ •๋ ฌ์€ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์„ ์„ ํƒํ•ด์„œ ์ œ์ผ ์•ž์œผ๋กœ ๋ณด๋‚ด๋ฉด ์–ด๋–จ๊นŒ? ๋ผ๋Š” ๊ณ ๋ฏผ์—์„œ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. 

๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ธ ์ •๋ ฌ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

์„ ํƒ์ •๋ ฌ์€ ๋Œ€๋žต N* (N+1)/2 ๋ฒˆ์˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ์š”. 

๋น… ์˜ค ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ํ•˜๊ฒŒ๋œ๋‹ค๋ฉด  O(N^2)๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. 

์ฆ‰, ์„ ํƒ ์ •๋ ฌ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N^2). 

// 1 ~ 10 ๊นŒ์ง€ ์ •๋ ฌ ํ•˜๊ธฐ 
#include<stdio.h>
int main(void) {
	int arr[10] = { 1,3,2,5,7,6,10,9,8,4 };

	int i, j, index, temp;

	for (i = 0; i < 10; i++) {
		int min = 11;
		for (j = i; j < 10; j++) {
			if (arr[j] < min) {
				min = arr[j];
				index = j;
			}
		}
		temp = arr[i];
		arr[i] = arr[index];
		arr[index] = temp;
	}
	for (i = 0; i < 10; i++) {
		printf("%d", arr[i]);
	}
	return 0;
}