ํ”„๋กœ๊ทธ๋ž˜๋ฐ/Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์‚ฝ์ž… ์ •๋ ฌ Insertion Sort

NaNaRin๐Ÿ™ƒ 2021. 1. 24. 16:38

 

์‚ฝ์ž… ์ •๋ ฌ (Insertion Sort) ์•Œ๊ณ ๋ฆฌ์ฆ˜ :

์„ ํƒํ•œ ์š”์†Œ๋ฅผ ๊ทธ๋ณด๋‹ค ๋” ์•ž์ชฝ์˜ ์ •๋ ฌ๋œ ๋ถ€๋ถ„์˜ ์•Œ๋งž์€ ์œ„์น˜์— ์‚ฝ์ž…ํ•˜์—ฌ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

ํŠธ๋Ÿผํ”„ ์นด๋“œ๋ฅผ ํ•œ ์ค„๋กœ ๋Š˜์–ด๋†“์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์œ ์‚ฌ

 

1. ์•„์ง ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„์˜ ์ฒซ๋ฒˆ์งธ ์š”์†Œ selection[i]๋ฅผ ์„ ํƒ

2. ์ •๋ ฌ๋œ ๋ถ€๋ถ„์—์„œ selection[i]์˜ ์•Œ๋งž์€ ์œ„์น˜๋ฅผ ์ฐพ์•„ ์‚ฝ์ž…

   2-1. ์ •๋ ฌ๋œ ๋ถ€๋ถ„์˜ ์š”์†Œ๋ฅผ ํ•œ์นธ์”ฉ ๋’ค๋กœ ๋ฐ€์–ด๋‚ธ๋‹ค

   2-2. ์ •๋ ฌ๋œ ๋ถ€๋ถ„์˜ ์™ผ์ชฝ ๋์— ๋„๋‹ฌํ•˜๊ฑฐ๋‚˜ selection[i]๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ˆ˜๋ฅผ ๋งŒ๋‚  ๋•Œ ๊นŒ์ง€

   2-3. ์•Œ๋งž์€ ์ž๋ฆฌ์— selection[i] ์‚ฝ์ž…

 

๋ฐฐ์—ด insertion์˜ ์‚ฝ์ž… ์ •๋ ฌ ๊ณผ์ •

 

 

๋ฉ”์„œ๋“œ insertionSort() : ๊ธธ์ด๊ฐ€ n์ธ ๋ฐฐ์—ด a๋ฅผ ์‚ฝ์ž… ์ •๋ ฌ

๋งค๊ฐœ๋ณ€์ˆ˜ : int[] a, int n

 

- ์‚ฝ์ž… ์ •๋ ฌ

void insertionSort(int[] a, int n) {
	for(int i = 1; i < n; i++) {
		int j;
		int tmp = a[i];
		for(j = i; j > 0 && a[j-1] > tmp; j--) {
			a[j] = a[j-1];
		}
		a[j] = tmp;
	}
}

 

 

 

 

์‚ฝ์ž… ์ •๋ ฌ Insertion Sort :

์ตœ์„  = O(N) , ํ‰๊ท  = ์ตœ์•… = O(N^2)

์•ˆ์ •ํ•œ ์ •๋ ฌ