๐ŸŒป JAVA/์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์„ ํƒ ์ •๋ ฌ (Selection Sort)

iseunghan 2021. 11. 21. 23:40
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š”, ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ •๋ฆฌํ•˜๋Š” ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ฐธ๊ณ ํ•˜์‹œ๋ ค๋ฉด ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์ฃผ์„ธ์š”. ๐Ÿ˜Š

 

'๐ŸŒป JAVA/์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก

๊ณต๋ถ€ํ•œ ๊ฒƒ๋“ค ์ •๋ฆฌํ•œ ๋‚ด์šฉ์„ ํฌ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค.

iseunghan.tistory.com

 

 

์„ ํƒ ์ •๋ ฌ (Selection Sort)

์ •๋ ฌํ•˜์—ฌ ์›์†Œ๋ฅผ ๋ฐฐ์น˜ํ•  ์ž๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ์ •ํ•ด๋†“๊ณ , ํ•ด๋‹น ์ž๋ฆฌ์— ๋„ฃ์„ ์›์†Œ๋ฅผ ์„ ํƒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ์‚ฝ์ž… ์ •๋ ฌ๊ณผ ํ—ท๊ฐˆ๋ฆฐ ์ •๋ ฌ,, ์„ ํƒ ์ •๋ ฌ์€ ๋„ฃ์„ ์ž๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ์ง€์ •ํ•˜๊ณ , ์‚ฝ์ž… ์ •๋ ฌ์€ 1 ๋ฒˆ์งธ๋ถ€ํ„ฐ n๋ฒˆ์งธ ์›์†Œ๋ฅผ ์•ž์˜ ์›์†Œ์™€ ๋น„๊ตํ•˜๋ฉฐ ์‚ฝ์ž…ํ•ด ๋‚˜๊ฐ€๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. (ํ—ท๊ฐˆ๋ฆผ..)

์‹œ๊ฐ„ ๋ณต์žก๋„ : O(N^2)
๊ณต๊ฐ„ ๋ณต์žก๋„ : O(N)
๋ถˆ์•ˆ์ • ์ •๋ ฌ

 

๊ณผ์ •

 

  1. ๋จผ์ € 1 ๋ฒˆ์งธ ์ž๋ฆฌ์— ์˜ฌ ์›์†Œ๋ฅผ ์„ ํƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์›์†Œ๊นŒ์ง€ ํƒ์ƒ‰ํ•˜์—ฌ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜์™€ 1 ๋ฒˆ์งธ ์ˆ˜์™€ ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  2. ์ด์ œ 2 ๋ฒˆ์งธ ์ž๋ฆฌ์— ์˜ฌ ์›์†Œ๋ฅผ ์„ ํƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์›์†Œ๊นŒ์ง€ ํƒ์ƒ‰ํ•˜์—ฌ ๊ทธ ์ค‘ ์ œ์ผ ์ž‘์€ ์ˆ˜์™€ ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  3.  ์œ„์™€ ๋™์ผ
  4. ์œ„์™€ ๋™์ผ
  5. ์ •๋ ฌ์ด ์™„๋ฃŒ๋์Šต๋‹ˆ๋‹ค.

 

Code

  • ๋จผ์ € ์ •ํ•  ์œ„์น˜์˜ ๋ฒ”์œ„๋Š” ์ฒซ ๋ฒˆ์งธ ์œ„์น˜๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ - 1 ์œ„์น˜๊นŒ์ง€ ์ž…๋‹ˆ๋‹ค.
  • ๊ทธ ๋‹ค์Œ ํ•ด๋‹น ์œ„์น˜์— ๋„ฃ์„ ์›์†Œ๋Š” i + 1๋ฒˆ์งธ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์›์†Œ๊นŒ์ง€ ์ž…๋‹ˆ๋‹ค.
int temp, min_idx;

for(int i=0; i<arr.length - 1; i++) {
    min_idx = i;
    
    for(int j=i + 1; j<arr.length; j++) {
        if( arr[min_idx] > arr[j])	min_idx = j;
    }
    temp = arr[i];
    arr[i] = arr[min_idx];
    arr[min_idx] = temp;
}
  • ๊ฐ€์žฅ ์ž‘์€ ์›์†Œ์˜ ์œ„์น˜๋ฅผ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•ด min_idx ๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ ๋ฒ”์œ„์— ๊ฐ€์žฅ ์ž‘์€ ์›์†Œ๋ฅผ ์ฐพ์•˜์œผ๋ฉด, ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
๋ฐ˜์‘ํ˜•