Deep_Dev

๐Ÿ’ก ์„ ํƒ์ •๋ ฌ ( Selection Sort )

๊ฐ€์žฅ ์›์‹œ์ ์ธ ๋ฐฉ๋ฒ•์˜ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌด์ž‘์œ„๋กœ ์—ฌ๋Ÿฌ๊ฐœ ์žˆ์„ ๋•Œ, ๊ฐ€์žฅ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•ด ๋งจ ์•ž์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋ฐ”๊พธ๊ณ , ๊ทธ ๋‹ค์Œ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•ด

์•ž์—์„œ ๋‘๋ฒˆ์งธ ๋ฐ์ดํ„ฐ์™€ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„ : O(N²)

์žฅ์ 

  • ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๊ฐ€ ์ž‘๋‹ค.

๋‹จ์ 

  • ์•ˆ์ • ์ •๋ ฌ์ด ์•„๋‹ˆ๋‹ค.
  • ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(N^2) ์ด๋‹ค.

 

public void sort(int[] arr) {
        for(int i=0; i<arr.length-1; i++){
            int min_index = i;
            for(int j=i+1; j<arr.length; j++){
                if(arr[j]<arr[min_index])
                    min_index = j;
            }
            int temp = arr[i];       
            arr[i] = arr[min_index]; 
            arr[min_index] = temp; 
        }
}

 

 

๐Ÿ’ก ์‚ฝ์ž…์ •๋ ฌ ( Insertion Sort )

๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋ฉฐ, ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•œ๋‹ค.

 

์„ ํƒ์ •๋ ฌ์— ๋น„ํ•ด ์‹คํ–‰ ์‹œ๊ฐ„ ์ธก๋ฉด์—์„œ ๋” ํšจ์œจ์ ์ด๋ฉฐ, ํ•„์š”ํ•  ๋•Œ๋งŒ ์œ„์น˜๋ฅผ ๋ฐ”๊พธ๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฑฐ์˜ ์ •๋ ฌ๋˜์–ด ์žˆ์„๋•Œ ๋”์šฑ ํšจ๊ณผ์ ์ด๋‹ค.

 

์‚ฝ์ž…์ •๋ ฌ์€ ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ ์ ˆํ•œ ์œ„์น˜์— ๋“ค์–ด๊ฐ€๊ธฐ ์ด์ „์—, ๊ทธ ์•ž๊นŒ์ง€์˜ ๋ฐ์ดํ„ฐ๋Š” ์ด๋ฏธ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ฆฌ์ŠคํŠธ์—์„œ ์ ์ ˆํ•œ ์œ„์น˜๋ฅผ ์ฐพ์€ ๋’ค์—, ๊ทธ ์œ„์น˜์— ์‚ฝ์ž…๋œ๋‹ค.

 

์‹œ๊ฐ„๋ณต์žก๋„ : O(N^²)

์žฅ์ 

  • ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๊ฐ€ ์ž‘๋‹ค.
  • ๊ฑฐ์˜ ์ •๋ ฌ๋œ ๊ฒฝ์šฐ ๋งค์šฐ ํšจ์œจ์ ์ด๋‹ค. ์ฆ‰ ์ตœ์„ ์˜ ๊ฒฝ์šฐ O(N)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.
  • ์•ˆ์ •์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋‹จ์ 

  • ์—ญ์ˆœ์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๋‹ค. ์ฆ‰ ์ตœ์•…์˜ ๊ฒฝ์šฐ O(N^2)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.
  • ๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ์— ๋”ฐ๋ผ์„œ ์„ฑ๋Šฅ ํŽธ์ฐจ๊ฐ€ ๋งค์šฐ ํฌ๋‹ค.

 

public void sort(int[] arr) {
        for(int i=1; i<arr.length;i++){
            int temp=arr[i];
            int j;
            for(j=i-1; j>=0;j--){ // ํ•œ ์นธ์”ฉ ์™ผ์ชฝ์œผ๋กœ ์ด๋™
                if(temp < arr[j])
                    arr[j+1] = arr[j];
                else break; // ์ž๊ธฐ๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„ ๋งŒ๋‚˜๋ฉด ๊ทธ ์œ„์น˜์—์„œ ๋ฉˆ์ถค
            }
            arr[j+1] = temp;    
        }
}

 

 

๐Ÿ’ก ๋ฒ„๋ธ”์ •๋ ฌ ( Bubble Sort )

๋‘ ๊ฐœ์˜ ์ธ์ ‘ํ•œ ์›์†Œ๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ์‹

์‹œ๊ฐ„๋ณต์žก๋„ : O(N2)

์žฅ์  

  • ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๊ฐ€ ์ž‘๋‹ค.
  • ๊ตฌํ˜„์ด ๋งค์šฐ ์‰ฝ๋‹ค.
  • ์•ˆ์ •์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋‹จ์ 

  • ๋‹ค๋ฅธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋น„ํ•ด ๊ตํ™˜ ๊ณผ์ •์ด ๋งŽ์•„ ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•œ๋‹ค.
public void sort(int[] arr) {
        for(int i=0; i<arr.length-1; i++){
            for(int j=0; j<arr.length-i-1; j++){
                if(arr[j]>arr[j+1]){
                    int tmp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=tmp;
                }
            }
        }
 }

 

 

 

'๐Ÿ“š ์ฝ”๋”ฉํ…Œ์ŠคํŠธ > JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[JAVA] Collection ( HashMap , HashSet ์ฐจ์ด )  (0) 2022.11.11
[JAVA][์•Œ๊ณ ๋ฆฌ์ฆ˜] BFS  (0) 2022.11.08
[JAVA] Queue ์ •๋ฆฌ  (0) 2022.11.05
[JAVA] Stack ์ •๋ฆฌ  (0) 2022.11.05
[JAVA] BigDecimal ์ •๋ฆฌ  (0) 2022.11.05