[Algorithm] ์ ํ์ ๋ ฌ - Selection Sort
Updated:
-
Selection Sort
์ฝ์ ์ ๋ ฌ์ ์์น๋ฅผ ์ฐพ์ ๋ฃ์ด์คฌ๋ค๋ฉด
์ ํ์ ๋ ฌ์ ์ฝ์ ํ ์์น๋ฅผ ์ ํ ํ ๊ทธ ์์น์ ๋ค์ด๊ฐ ๊ฐ์ ์ฐพ์ ๋ฃ์ด์ค๋ค.
์ ์ด๋ฏธ์ง๋ sortLoc๋ฅผ ํตํด ์ฝ์ ํ ์์น๋ฅผ ์ ํ๊ณ
minLoc๋ฅผ ํตํด ์ต์๊ฐ ์์น๋ฅผ ์ฐพ์ Swap ํด์ฃผ๋ ๋ฐฉ์์ด๋ค.
์ฝ๋๋ก ๋ณด์๋ฉด
void selectionSort(int *arr, int arrSize) { int j, sortLoc, minLoc, tmp; // arrSize - 1 ๋งํผ ๋ฐ๋ณตํ๋ฉด ์ ๋ ฌ ์์ฑ for(sortLoc = 0; sortLoc < arrSize - 1; sortLoc++) { minLoc = sortLoc; for(j = sortLoc; j < arrSize; j++) { if(arr[minLoc] > arr[j]) minLoc = j; } // ์ ๋ ฌํ ์์น์ ์ต์๊ฐ์ ์์น๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ง swap ํ๋ค if(minLoc != sortLoc){ tmp = arr[minLoc]; arr[minLoc] = arr[sortLoc]; arr[sortLoc] = tmp; } } }
๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ณ ์ถ๋ค๋ฉด ์ต์๊ฐ ์ฐพ๋ ๋ถ๋ถ์ ์ต๋๊ฐ์ผ๋ก ๋ฐ๊พธ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
์์ฃผ์์ฃผ ๊ธฐ๋ณธ ์ ๋ ฌ๋ฐฉ๋ฒ์ธ ์ ํ์ ๋ ฌ๊ณผ ์ฝ์ ์ ๋ ฌ์ ์์ ๋ณด์๋ค.
๋ค์์๋ ์ฒ์ ๋ฐฐ์ธ๋ ์์ฃผ์์ฃผ ํท๊ฐ๋ ค ์ดํด๊ฐ ๊ฐ์ง ์์๋ Merge Sort๋ฅผ ์ ๋ฆฌํด ๋ณด๊ฒ ๋ค.
Leave a comment