์ด์ค‘ for๋ฌธ๊ณผ int temp์— ์ž„์‹œ๋กœ arr[minIndex]๋ฅผ ๋„ฃ๋Š” ๊ตฌ์กฐ๋ฅผ ์Šค์Šค๋กœ ์†์œผ๋กœ ์ ์–ด๊ฐ€๋ฉฐ ๊ทธ ๊ณผ์ •๋“ค์„ ์ฒด๊ฐํ–ˆ๋‹ค.

์„ ํƒ์ •๋ ฌ์€ ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ด ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

 

1. ์„ ํƒ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ๋ฆ„

์„ ํƒ ์ •๋ ฌ์€ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ฐพ์•„ ๋ฐฐ์—ด์˜ ๋งจ ์•ž์— ์œ„์น˜์‹œํ‚ค๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

2. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋…ผ๋ฆฌ

  1) ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ๊ฐ’๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋‚˜๋จธ์ง€ ๊ฐ’๋“ค ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ฐพ๋Š”๋‹ค.

  2) ์ฐพ์€ ๊ฐ’์„ ํ˜„์žฌ ์œ„์น˜์™€ ๊ตํ™˜ํ•œ๋‹ค.

  3) ๋‹ค์Œ ์œ„์น˜๋กœ ์ด๋™ํ•ด ์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

   4) ๋ฐฐ์—ด์˜ ๋๊นŒ์ง€ ๊ฐ€๋ฉด ์ •๋ ฌ์ด ์™„๋ฃŒ๋œ๋‹ค. 


3. ์„ ํƒ ์ •๋ ฌ ๊ตฌํ˜„ ์ฝ”๋“œ

import java.util.Arrays;

public class SelectionSort {
   public static void selectionSort(int[] arr) {
       int n = arr.length;
       
       // ๋ฐฐ์—ด์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋ฐ˜๋ณต
       for (int i = 0; i < n-1 ; i++) {
          // ํ˜„์žฌ ์œ„์น˜๋ฅผ ์ตœ์†Œ๊ฐ’์˜ ์œ„์น˜๋กœ ๊ฐ€์ •
          int minIndex = i;
          
          // ํ˜„์žฌ ์œ„์น˜ ์ดํ›„์˜ ๊ฐ’๋“ค ์ค‘ ์ตœ์†Œ๊ฐ’ ํƒ์ƒ‰
          for (int j= i+1; j < n; j++) {
              if (arr[j] < arr[minIndex]){
                 mimIndex = j; // ๋” ์ž‘์€ ๊ฐ’ ๋ฐœ๊ฒฌ ์‹œ ์ธ๋ฑ์Šค ์—…๋ฐ์ดํŠธ
              }
          }
          
          // ํ˜„์žฌ ์œ„์น˜์™€ ์ตœ์†Œ๊ฐ’ ์œ„์น˜๋ฅผ ๊ตํ™˜
          int temp = arr[minIndex];
          arr[minIndex] = arr[i];
          arr[i] = temp;
     }
   }
   public static void main(String[] args) {
       int[] arr = {9, 6, 7, 3, 5};
       System.out.println("Before Sorting: " + Arrays.toString(arr));
       selctionSort(arr);
       System.out.println("After Sortion:" + Arrays.toString(arr));
   }
}

 

1) ์ˆซ์ž ์นด๋“œ ์ •๋ ฌ ๊ฒŒ์ž„

 ๋‚˜์—๊ฒŒ ์ฃผ์–ด์ง„ ์ˆซ์ž ์นด๋“œ 5์žฅ์€ 9, 6 , 7 , 3, 5.

 ์ด ์นด๋“œ๋ฅผ ์ž‘์€ ์ˆซ์ž๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ค„์„ ์„ธ์›Œ์•ผ ํ•œ๋‹ค.

 

 

2) ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•

 2.1) ์ฒซ ๋ฒˆ์งธ ์นด๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์žก๋Š”๋‹ค. (9)

 2.2) ์ฒซ ๋ฒˆ์งธ ์นด๋“œ ๋’ค์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๋ฅผ ์ฐพ๋Š”๋‹ค.(3)

 2.3) ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๋ž‘ ์ฒซ ๋ฒˆ์งธ ์นด๋“œ ์ž๋ฆฌ ๋ฐ”๊พธ๊ธฐ! ์ด์ œ๋Š” 3์ด ๋งจ ์•ž์— ์˜จ๋‹ค.

 2.4) ๋‘๋ฒˆ์งธ ์นด๋“œ๋กœ ๋„˜์–ด๊ฐ€์„œ ๋‹ค์‹œ ๋ฐ˜๋ณตํ•œ๋‹ค! ๋‘ ๋ฒˆ์งธ ์นด๋“œ ๋’ค์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๋ฅผ ์ฐพ๋Š”๋‹ค.(5)

 2.5) ์ฐพ์€ ์ˆซ์ž๋ž‘ ์ž๋ฆฌ ๋ฐ”๊พธ๊ธฐ! (3, 5, 7, 9, 6)

 2.6) ์„ธ ๋ฒˆ์งธ ์นด๋“œ๋กœ ๋„˜์–ด๊ฐ€์ž. ๋‚จ์€ ์ˆซ์ž๋“ค ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๋ฅผ ์ฐพ๊ณ  ์ž๋ฆฌ ๋ฐ”๊พธ๊ธฐ! (3, 5, 6, 9, 7)

 2.7) ๋งˆ์ง€๋ง‰์œผ๋กœ ๋„ค ๋ฒˆ์งธ ์นด๋“œ์™€ ๋‹ค์„ฏ ๋ฒˆ์งธ ์นด๋“œ๋กœ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•˜๋ฉด ๋!

 

 

์ œ์ผ ์ž‘์€ ์ˆซ์ž ์ฐพ๊ณ !
๊ทธ ์ˆซ์ž๋ž‘ ์ž๋ฆฌ ๋ฐ”๊ฟ”!
๋‹ค์Œ ์นด๋“œ๋„ ๋˜‘๊ฐ™์ด!
๋งจ ๋๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด!

   3.1 ์‹คํ–‰ ๊ฒฐ๊ณผ

Before Sorting: [9, 6, 7, 3, 5]
After Sortion: [3, 5, 6, 7, 9]

4. ์„ ํƒ ์ •๋ ฌ์˜ ๋…ผ๋ฆฌ์  ์‚ฌ๊ณ ์™€ ์ž๋ฐ” ๋ฌธ๋ฒ• ํ•ด์„ค

  4.1 ์ตœ์†Œ๊ฐ’ ํƒ์ƒ‰ - ์นด๋“œ์˜ ๋’ท๋ถ€๋ถ„์„ ์ญ‰~ ์‚ดํŽด๋ณด๋ฉด์„œ ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๋ฅผ ์ฐพ๋Š”๋‹ค.

int minIndex = i;
for (int j = i + 1; j < n; j++) {
   if (arr[j] < arr[minIndex]) {
       minIndex = j;
   }
}

 - minIndex : ํ˜„์žฌ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅ.

- if ์กฐ๊ฑด๋ฌธ์„ ํ†ตํ•ด ๋ฐฐ์—ด์˜ ๋‚˜๋จธ์ง€ ๊ฐ’๋“ค์„ ๋น„๊ต. 

 

  4.2 ๊ฐ’ ๊ตํ™˜ - ์ฐพ์€ ์ˆซ์ž๋ž‘ ์ž๋ฆฌ ๋ฐ”๊พธ๊ธฐ! 

int temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;

- ์„ ํƒ ์ •๋ ฌ์—์„œ๋Š” ๊ฐ’ ๊ตํ™˜์ด ํ•ต์‹ฌ์ด๋‹ค.

- ์ž„์‹œ ๋ณ€์ˆ˜ temp๋ฅผ ์‚ฌ์šฉํ•ด ๋‘ ๊ฐ’์„ ์•ˆ์ „ํ•˜๊ฒŒ ๊ตํ™˜ํ•œ๋‹ค.

 

4.3 ์‹œ๊ฐ„ ๋ณต์žก๋„

- ์ตœ์„ /์ตœ์•…/ํ‰๊ท  ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n^2) (์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ ๋•Œ๋ฌธ).

- ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘๊ฑฐ๋‚˜ ์ •๋ ฌ ๊ธฐ์ค€์ด ๊ฐ„๋‹จํ•œ ๊ฒฝ์šฐ ์œ ์šฉ.

+ Recent posts