QuickSort ๋ ผ๋ฌธ brief Part One: Theory ์ด sorting์ ๋ ๊ฐ์ ๊ฐ๋จํ ๋ณด์กฐ๋ฌธ์ ๋ก ๋๋์ด ํด๊ฒฐ๋ ์ ์๋๋ฐ, ๊ฐ ๋ฌธ์ ๋ ์ด๋ฏธ ์๋ ค์ง ๋ฐฉ์์ผ๋ก ํ ์ ์๋ค. Partition : key๊ฐ์ dividing line์ ๋ฐ๋ผ ์ ์๋๋ก ๋๋์ด ์ด๋ถํ๋ ๊ฒ ์ค์ ๋ก ์ด dividing line์ ํ์น ์๊ณ , ์๋ค ํ ์ง๋ผ๋ ์ฐพ๊ธฐ ํ๋ ๋ฐ dividing line์ด ์กด์ฌํ๊ณ ๊ทธ๊ฒ์ ์์น๋ง ์๋ค๋ฉด item๋ค์ ์ฌ์ ๋ ฌํ๊ธฐ๋ ์ฌ์์ง๋ค. partition ๊ณผ์ ์ ๋ ฌ๋์ด์ผํ๋ ์์ดํ ์ ํค ์ค ํน์ ํค๋ฅผ ๊ณ ๋ฅธ๋ค. ์ด ํค๋ bound ๋ผ ๋ถ๋ฆฐ๋ค. dividing line ์๋์๋ bound๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ key๊ฐ์ด, ์์ชฝ์๋ ํฐ key ๊ฐ์ด ์ค๊ฒ ํ๋ค. dividing line์ ์์น๋ ๋ฏธ๋ฆฌ ์ ํ์..
/* 2020-03-19 ์ฐํฌ์ ์ฝ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ */ #define _CRT_SECURE_NO_WARNINGS #include #include #include #include int buffer[10000000]; // ์ ์ญ ๋ณ์๋ก ๋ฃ์ด์ผ stack overflow๊ฐ ๋์ง ์์ void fileOpen() { FILE *fp = fopen("d://algorithm/unsorted10000000.txt", "r"); int i = 0; int tmp = 0; if (fp == NULL) { printf("ํ์ผ์ ์ด ์ ์์ต๋๋ค.\n"); } while (fscanf(fp, "%d ", &tmp)!=EOF) { buffer[i++] = tmp; } fclose(fp); } void insertSortin..
7. ๋ถํ ์ ๋ณต 7.1 ๋์ ๋ถํ ์ ๋ณต( Divide & Conquer)์ ๊ฐ์ฅ ์ ๋ช ํ ์๊ณ ๋ฆฌ์ฆ ๋์์ธ ํจ๋ฌ๋ค์์ผ๋ก, ๊ฐ๊ฐ ๊ฒฉํ๋ผ๊ณ ์ค๋ช ํ ์ ์์ ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ๋ ์ด์์ ๋ถ๋ถ ๋ฌธ์ ๋ก ๋๋ ํ, ์ฌ๊ท ํธ์ถ์ ์ด์ฉํด ๊ฐ๊ฐ์ ๋ต์ ๊ณ์ฐํ๊ณ , ๋ถ๋ถ ๋ฌธ์ ์ ๋ต์ ์ด์ฉํด ์ ์ฒด์ ๋ต์ ๊ณ์ฐํ๋ ๋ฐฉ์ ์๊ณ ๋ฆฌ์ฆ ๊ตฌ์ฑ divide ๋ฌธ์ ๋ฅผ ๋ ์์ ๋ฌธ์ ๋ก ๋ถํ merge ๊ฐ ๋ฌธ์ ์ ๋ต์ ์ ์ฒด ๋ฌธ์ ์ ๋ต์ผ๋ก ๋ณํฉ base case ๋์ด์ ๋ต์ ๋ถํ ํ์ง ์๊ณ ํ ์ ์๋ ๋งค์ฐ ์์ ๋ฌธ์ ์ ์ฉ๊ฐ๋ฅํ ๋ฌธ์ ์ ํน์ฑ ๋ฌธ์ ๋ฅผ ๋ถ๋ถ ๋ฌธ์ ๋ก ๋๋๋ ์์ฐ์ค๋ฌ์ด ๋ฐฉ๋ฒ์ด ์กด์ฌํด์ผํจ ๋ถ๋ถ ๋ฌธ์ ์ ๋ต์ ์กฐํฉํด ์ ์ฒด ๋ฌธ์ ์ ๋ต์ ๊ณ์ฐํ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ด ์์ด์ผํจ ์ฅ์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์์ ์์ ์ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํด์ค ์์ : ์์ด์ ๋น ๋ฅธ ํฉ๊ณผ ํ๋ ฌ์ ๋น ๋ฅธ..
Comment