๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜๐Ÿ”

(4)
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์‰˜ ์ •๋ ฌ (Shell Sort) ์‰˜์ •๋ ฌ์ด๋ž€, ์„ ํƒ์ •๋ ฌ์˜ ์ธ์ ‘ํ•œ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ”๊ฟ” ๊ทธ๋ฃน์„ ๋‚˜๋ˆ„์–ด, ๊ทธ๋ฃน๋งˆ๋‹ค์˜ ์„ ํƒ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ •๋ ฌ ๋ฐฉ์‹์„ ํ†ตํ•ด ๋А๋ ค์ง์„ ์™„ํ™”ํ•œ ์ •๋ ฌ ๋ฐฉ์‹์ด๋‹ค. ( ์‰˜ ์ •๋ ฌ์˜ ๊ฒฝ์šฐ ๊ทธ๋ฃน์˜ ํฌ๊ธฐ๋งŒํผ ๋ ˆ์ฝ”๋“œ ์ด๋™์ด ๊ฐ€๋Šฅํ•ด์ง! ) void ShellSort(int A[], int n){ //์ž…๋ ฅ : A[0:n-1],n: ์ •๋ ฌํ•  ์›์†Œ์˜ ๊ฐœ์ˆ˜ //์ถœ๋ ฅ : A[0:n-1] : ์ •๋ ฌ๋œ ๋ฐฐ์—ด int h,i,j,Value; h=1; do h = 3*h+1; while (h h->4 -> h=1๋กœ ์ง„ํ–‰๋œ๋‹ค. do { h=h/3; for (i=h; iValue){ A[j]=A[j-h]; j -= h; if (j1); n์„ ๋„˜์ง€ ์•Š๋Š” h๊ฐ’์„ ์ฐพ์•„์„œ ์ง„ํ–‰ํ•œ๋‹ค. ์„ ..
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋ฒ„๋ธ”์ •๋ ฌ(Bubble Sort) ๋ฒ„๋ธ”์ •๋ ฌ์€ ์ธ์ ‘ํ•œ ๋ฐ์ดํ„ฐ๋“ค ๊ฐ„์˜ ์ž๋ฆฌ๋ฐ”๊ฟˆ์„ ํ•˜๋Š” ์ •๋ ฌ๋ฐฉ์‹์ด๋‹ค. void BubbleSort(int A[], int n){ int i; bool Sorted; while (!Sorted){ Sorted= true; for(i=1;iA[i]){ Swap(&A[i-1],&A[i]); Sorted = false; n--; } } } } ์ตœ์„ ์‹œ๊ฐ„๋ณต์žก๋„ : O(n)(์ด๋ฏธ ์ •๋ ฌ์ด ์™„๋ฃŒ๋œ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๋Š” ๊ฒฝ์šฐ) ํ‰๊ท ์‹œ๊ฐ„๋ณต์žก๋„ : O(n^2) ์ตœ์•…์‹œ๊ฐ„๋ณต์žก๋„ : O(n^2) ์ œ์ž๋ฆฌ์„ฑ : ์ œ์ž๋ฆฌ ์ •๋ ฌ (์ƒ์ˆ˜ ํฌ๊ธฐ ๋ฉ”๋ชจ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ œ์ž๋ฆฌ ์ •๋ ฌ์ด๋‹ค.) ์•ˆ์ •์„ฑ : ์•ˆ์ •๋œ ์ •๋ ฌ (์ธ์ ‘ํ•œ ๋ ˆ์ฝ”๋“œ๋งŒ ์ž๋ฆฌ๋ฐ”๊ฟˆ : ํ‚ค๊ฐ’์ด ๊ฐ™์„๋•Œ ์ž๋ฆฌ๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ •์ ์ด๋‹ค.)
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์„ ํƒ์ •๋ ฌ (SelectionSort) ์„ ํƒ์ •๋ ฌ์€ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๊ฐ€ key๊ฐ’์œผ๋กœ ํ‘œํ˜„๋˜์–ด, ํ•œ ์›์†Œ์™€ ๋‚˜๋จธ์ง€ ๋ชจ๋“  ์›์†Œ๋ฅผ ๋น„๊ตํ•˜๋Š” ์ •๋ ฌ์ด๋‹ค. void SelectionSort(int A[], int n){ int i, j,MinIndex; for(i=0;i ๋ณต์žก๋„๋Š” ์ž…๋ ฅ์ž๋ฃŒ ์ˆœ์„œ์™€ ๋ฌด๊ด€ํ•˜๋‹ค. ํ‰๊ท ์‹œ๊ฐ„ ๋ณต์žก๋„=O(n^2) ์ตœ์•…์‹œ๊ฐ„ ๋ณต์žก๋„=O(n^2) ์„ ํƒ์ •๋ ฌ์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ์˜ ๋‚ด์š”ใ…›ใ…‡๊ณผ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„๊นŒ์ง€ ๋ชจ๋“  ๋น„๊ต๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ํ‰๊ท  ์‹œ๊ฐ„๋ณต์žก๋„ == ์ตœ์•…์‹œ๊ฐ„๋ณต์žก๋„์ด๋‹ค. ์ œ์ž๋ฆฌ์„ฑ : ์ œ์ž๋ฆฌ ์ •๋ ฌ (์ฃผ์–ด์ง„ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์™ธ์— ์ถ”๊ฐ€์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” (์ƒ์ˆ˜ํฌ๊ธฐ) ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—†๋Š” ์ •๋ ฌ) ์•ˆ์ •์„ฑ : ๋ถˆ์•ˆ์ •ํ•œ ์ •๋ ฌ (์ •๋ ฌํ›„์— ๊ฐ™์€ ๊ฐ’์ธ ์š”์†Œ์˜ ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š๋Š” ์ •๋ ฌ๋ฐฉ์‹) ์ธ์ ‘ํ•œ ์š”์†Œ์™€ ์Šค์™€์นญ์ด ์ผ๋Ÿฌ๋‚˜๋ฉด ๋Œ€๋ถ€๋ถ„ ์•ˆ์ •ํ•œ ์ •๋ ฌ์ด๋‹ค.(๋–จ์–ด์ ธ์žˆ๋Š” ์š”์†Œ์™€ ..
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€? program์€ ์ž๋ฃŒ๊ตฌ์กฐ + ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ตœ๋Œ€๊ฐ’ ํƒ์ƒ‰ ํ”„๋กœ๊ทธ๋žจ์„ ์ง ๋‹ค๊ณ  ํ•˜๋ฉด ๊ทธ ์•ˆ์—๋Š” ํƒ์ƒ‰ํ•  ์š”์†Œ๊ฐ€ ๋‹ด๊ธด ์ž๋ฃŒ๊ตฌ์กฐ(ex. List) + ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜(ex. ์ˆœ์ฐจํƒ์ƒ‰)์ด ๋“ค์–ด์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ด๋•Œ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์‰ฌ์šด ์ ‘๊ทผ๊ณผ ์ˆ˜์ •์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์งํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ž๋ฃŒ๊ตฌ์กฐ์—๋Š” ์•„๋ž˜ ํ‘œ์™€ ๊ฐ™์ด ํฌ๊ฒŒ ๋‹ค์„ฏ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. List Stack Queue Tree Graph ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์œ ๋ž˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ Al-Khowarizmi (์•Œ์ฝฐ๋ฆฌ์ฆˆ๋ฏธ)๋ผ๋Š” ํ•œ ์ˆ˜ํ•™์ž์˜ ์ด๋ฆ„์—์„œ ์ฐฉ์•ˆ๋˜์—ˆ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ •์˜ ์ „ํ˜•์ ์œผ๋กœ ์ž…๋ ฅ์„ ์ถœ๋ ฅ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ผ๋ จ์˜ ๊ณ„์‚ฐ ๋‹จ๊ณ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋‘๊ฐ€์ง€ ์กฐ๊ฑด ์ •๋‹น์„ฑ - ๋ชจ๋“  ์ธํ’‹์— ๋Œ€ํ•˜์—ฌ ์ •ํ™•ํ•œ ์•„์›ƒํ’‹์ด ๋‚˜์˜ค๊ณ  ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•œ๋‹ค. (๋ฌดํ•œ๋ฃจํ”„๋Š” ์ •๋‹นํ•˜์ง€ ์•Š์Œ) ํšจ์œจ์„ฑ ..