์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์„ ํƒ ์ •๋ ฌ(Selection sort)

Trudy | ์†ก์—ฐ 2023. 12. 11. 17:35

๐Ÿ“์„ ํƒ ์ •๋ ฌ์ด๋ž€?

 

1. ์ฃผ์–ด์ง„ ๋ฆฌ์ŠคํŠธ ์ค‘์— ์ตœ์†Œ๊ฐ’์„ ์ฐพ๋Š”๋‹ค.

2. ๊ทธ ๊ฐ’์„ ๋งจ ์•ž์— ์œ„์น˜ํ•œ ๊ฐ’๊ณผ ๊ต์ฒดํ•œ๋‹ค(ํŒจ์Šค(pass)).

3. ๋งจ ์ฒ˜์Œ ์œ„์น˜๋ฅผ ๋บ€ ๋‚˜๋จธ์ง€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ต์ฒดํ•œ๋‹ค.   

 

์„ ํƒ ์ •๋ ฌ์€ ์œ„ ๊ทœ์น™์— ๋”ฐ๋ผ ์ •๋ ฌ์ด ์ด๋ฃจ์–ด์ง„๋‹ค. 

 

์‹คํ–‰ ์˜ˆ์‹œ

0 [9,1,6,8,4,3,2,0] 0
1 [0,1,6,8,4,3,2,9] 1
2 [0,1,6,8,4,3,2,9] 2
3 [0,1,2,8,4,3,6,9] 3
4 [0,1,2,3,4,8,6,9] 4
5 [0,1,2,3,4,8,6,9] 6
6 [0,1,2,3,4,6,8,9] 8

์‹œ๊ฐ„ ๋ณต์žก๋„ ๋น„๊ต ๊ตํ™˜
์ตœ์•…์˜ ๊ฒฝ์šฐ  O(n^2) O(n)
์ตœ์„ ์˜ ๊ฒฝ์šฐ O(n^2) O(n)
ํ‰๊ท  O(n^2) O(n)

 

์„ ํƒ ์ •๋ ฌ์€ ์‹œ๊ฐ„์˜ ๋ณต์žก๋„๋Š” O(n^2)์œผ๋กœ ์†๋„๊ฐ€ ๋А๋ฆฐ ์ •๋ ฌ ๋ฐฉ๋ฒ•์— ์†ํ•˜์ง€๋งŒ, ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. 

๋˜, ๋ฒ„๋ธ” ์ •๋ ฌ๋ณด๋‹ค๋Š” ์„ ํƒ ์ •๋ ฌ์ด ํ•ญ์ƒ ์‹œ๊ฐ„ ๋ณต์žก๋„ ์ธก๋ฉด์—์„œ ์šฐ์ˆ˜ํ•˜๋‹ค.


๐Ÿ“์„ ํƒ ์ •๋ ฌ ๊ตฌํ˜„ ์ฝ”๋“œ | Java

    static void selectionSort(int[] arr) {
        int indexMin, temp;

        for (int i = 0; i < arr.length - 1; i++) {
            //for๋ฌธ์œผ๋กœ ๋ฐฐ์—ด์„ ๋Œ๋ฉด์„œ ๋ฐฐ์—ด์˜ ๊ฐ€์žฅ ์ž‘์€ ์›์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์•„๋ƒ„
            indexMin = i;
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[j] < arr[indexMin]) {
                    indexMin = j;
                }
            }

            //๊ฐ€์žฅ ์ž‘์€ ์›์†Œ๋ฅผ ๊ธฐ์ค€ ์›์†Œ์™€ ๋ฐ”๊ฟ”์น˜๊ธฐ
            temp = arr[indexMin];
            arr[indexMin] = arr[i];
            arr[i] = temp;

            System.out.println("๋ฐฐ์—ด: "+Arrays.toString(arr));
        }

        System.out.println("\n์ •๋ ฌ๋œ ์ตœ์ข… ๋ฐฐ์—ด: "+Arrays.toString(arr));
    }
    
        public static void main(String[] args) {
        int[] arr = {5, 1, 9, 7, 2, 3};
        selectionSort(arr);
    }

 

๐Ÿ“์‹คํ–‰ ๊ฒฐ๊ณผ 

๊ธฐ์กด ๋ฐฐ์—ด: {5, 1, 9, 7, 2, 3}

 


์ถœ์ฒ˜: https://ko.wikipedia.org/wiki/%EC%84%A0%ED%83%9D_%EC%A0%95%EB%A0%AC