[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