์๊ณ ๋ฆฌ์ฆ๐ (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 (์์ฝฐ๋ฆฌ์ฆ๋ฏธ)๋ผ๋ ํ ์ํ์์ ์ด๋ฆ์์ ์ฐฉ์๋์๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์ ์ ์ ํ์ ์ผ๋ก ์ ๋ ฅ์ ์ถ๋ ฅ์ผ๋ก ๋ณํํ๋ ์ผ๋ จ์ ๊ณ์ฐ ๋จ๊ณ๋ฅผ ์๋ฏธํ๋ค. ์๊ณ ๋ฆฌ์ฆ์ ๋๊ฐ์ง ์กฐ๊ฑด ์ ๋น์ฑ - ๋ชจ๋ ์ธํ์ ๋ํ์ฌ ์ ํํ ์์ํ์ด ๋์ค๊ณ ์ข ๋ฃ๋์ด์ผ ํ๋ค. (๋ฌดํ๋ฃจํ๋ ์ ๋นํ์ง ์์) ํจ์จ์ฑ .. ์ด์ 1 ๋ค์