์„ ํƒ ์ •๋ ฌ์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ?

์„ ํƒ ์ •๋ ฌ์ด๋ž€ ์ •๋ ฌ์ด ๋˜์ง€ ์•Š์€ ์ „์ฒด ๋ฐ์ดํ„ฐ ์ค‘์—์„œ ํ•ด๋‹น ์œ„์น˜์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•˜์—ฌ ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•˜๋Š” ์ œ์ž๋ฆฌ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ์ ˆ์ฐจ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

  • 1) ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ ๋ฆฌ์ŠคํŠธ ์ค‘์—์„œ ์ œ์ผ ์ž‘์€ ๊ฐ’์„ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š”๋‹ค.
  • 2) ์ฐพ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์žฅ ์ฒ˜์Œ์— ์œ„์น˜ํ•œ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜์™€ ๊ต์ฒดํ•œ๋‹ค.
  • 3) ๊ฐ€์žฅ ์ฒ˜์Œ ์œ„์น˜๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ฐ์ดํ„ฐ๋„ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ต์ฒดํ•œ๋‹ค.

์ด๋ฅผ ์˜์‚ฌ ์ฝ”๋“œ(Pseudo Code)๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

For i -> 0 to n:
    a[i] to a[n-1] ๊นŒ์ง€ ๋น„๊ตํ•œ ๋ฐ์ดํ„ฐ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๋ฐ์ดํ„ฐ๊ฐ€ a[j]์— ์žˆ๋‹ค๋ฉด,
    a[i] and a[j] swapping 


์„ ํƒ ์ •๋ ฌ ์ง„ํ–‰

๊ทธ๋ฆผ์œผ๋กœ ์„ ํƒ ์ •๋ ฌ์˜ ์ง„ํ–‰ ๊ณผ์ •์„ ์ž์„ธํžˆ ์‚ดํŽด๋ด…์‹œ๋‹ค. ์‹œ์ž‘ ์ƒํƒœ์— ๋Œ€ํ•œ ํฌํ•จ ์—ฌ๋ถ€(์ดˆ๊ธฐ ์ƒํƒœ๋กœ ์ฃผ๋А๋ƒ ์•ˆ ์ฃผ๋А๋ƒ)์— ๋”ฐ๋ผ์„œ ํšŒ์ „ ํšŸ์ˆ˜(PASS)๋ฅผ ์„ธ๋Š” ๋ฐฉ์‹์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"์—ฌ๊ธฐ์„œ๋Š” ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒฝ์šฐ๋งŒ N ํšŒ์ „(PASS)๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค."

์„ ํƒ ์ •๋ ฌ Step1


์„ ํƒ ์ •๋ ฌ Step2


์„ ํƒ ์ •๋ ฌ Step3


์„ ํƒ ์ •๋ ฌ Step4


์„ ํƒ ์ •๋ ฌ Step5


์„ ํƒ ์ •๋ ฌ Step6


์„ ํƒ ์ •๋ ฌ Step7


์„ ํƒ ์ •๋ ฌ Step8


์„ ํƒ ์ •๋ ฌ Step9


์„ ํƒ ์ •๋ ฌ Step10



์„ ํƒ ์ •๋ ฌ ๊ตฌํ˜„

์œ„ ๊ณผ์ •์„ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ด…์‹œ๋‹ค.

void selectionSort(int *list, const int n)
{
    int i, j, indexMin, temp;

    for (i = 0; i < n - 1; i++)
    {
        indexMin = i;
        for (j = i + 1; j < n; j++)
        {
            if (list[j] < list[indexMin])
            {
                indexMin = j;
            }
        }
        temp = list[indexMin];
        list[indexMin] = list[i];
        list[i] = temp;
    }
}


์„ ํƒ ์ •๋ ฌ์˜ ์„ฑ๋Šฅ

๋ณต์žก๋„๋ฅผ ์‚ดํŽด๋ณผ๊นŒ์š”? ์ตœ์„ (min), ํ‰๊ท (ave), ์ตœ์•…(max)์˜ ๊ฒฝ์šฐ์ผ ๋•Œ ์ •๋ ฌ์„ ์œ„ํ•œ ๋น„๊ต ํšŸ์ˆ˜๋ฅผ C๋ผ๊ณ  ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

\[{ C }_{ min }{ =C }_{ ave }={ C }_{ max }=\sum _{ i=1 }^{ N-1 }{ N-i } =\frac { N(N-1) }{ 2 } =O({ n }^{ 2 })\]

์—ฌ๊ธฐ์„œ N์€ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.