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

์•Œ๊ณ ๋ฆฌ์ฆ˜ - ๋ฒ„๋ธ” ์ •๋ ฌ (Bubble Sort)

iseunghan 2021. 11. 23. 15:00
๋ฐ˜์‘ํ˜•

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

 

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

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

iseunghan.tistory.com

 

 

๋ฒ„๋ธ” ์ •๋ ฌ (Bubble Sort)

๋ฒ„๋ธ” ์ •๋ ฌ์€ ์ธ์ ‘ํ•œ ๋‘ ์›์†Œ๋ฅผ ๋น„๊ตํ•ด ์ž๋ฆฌ๋ฅผ ๋ฐ”๊ฟ”๋‚˜๊ฐ€๋ฉด์„œ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

 

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

 

๊ณผ์ •

  1. ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์›์†Œ๊นŒ์ง€ ์ฐจ๋ก€๋Œ€๋กœ ์ธ์ ‘ํ•œ ์›์†Œ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  2. ์„œ๋กœ ๋น„๊ตํ•˜์—ฌ ์•ž ์›์†Œ๊ฐ€ ๋” ํฌ๋‹ค๋ฉด ์„œ๋กœ ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•ด์ค๋‹ˆ๋‹ค.
  3. ์ด๋ ‡๊ฒŒ ํ•œ ์‚ฌ์ดํด์ด ์™„๋ฃŒ๊ฐ€ ๋˜๋ฉด, ํ•ด๋‹น ์‚ฌ์ดํด์— ๋งˆ์ง€๋ง‰์— ์œ„์น˜์‹œํ‚จ ์›์†Œ๋Š” ์ •๋ ฌ์ด ์™„๋ฃŒ๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ค‘์š” : ์•„๋ž˜์—์„œ ์„ค๋ช…)

 

Code

์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ณผ์ •์„ ์ˆœ์„œ๋Œ€๋กœ ์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

1. ๋จผ์ € ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์›์†Œ๊นŒ์ง€ ์ฐจ๋ก€๋Œ€๋กœ ์ธ์ ‘ํ•œ ์›์†Œ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

1๋ฒˆ ๊ณผ์ •์„ ์ฝ”๋“œ๋กœ ์˜ฎ๊ธฐ๊ธฐ ์ „์— ํ•ด๋‹น ์‚ฌ์ดํด์€ ์ด ๋ช‡ ๋ฒˆ์ด ๋ฐ˜๋ณต๋˜์–ด์•ผ ํ• ๊นŒ์š”? ๋ฐ”๋กœ N-1๋ฒˆ์ž…๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ์›์†Œ๋Š” ๋น„๊ตํ•  ๋Œ€์ƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— -1์„ ํ•ด์ค€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

3๋ฒˆ ๊ณผ์ •์„ ๋ณด๋ฉด ํ•œ ์‚ฌ์ดํด์ด ๋๋‚˜๋ฉด ๋งˆ์ง€๋ง‰ ์›์†Œ๋Š” ์ด๋ฏธ ์ •๋ ฌ์ด ์™„๋ฃŒ๋œ ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ตณ์ด ์ •๋ ฌ์ด ์™„๋ฃŒ๋œ ์›์†Œ๋ฅผ ํƒ์ƒ‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ”์œ„๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฉ๋‹ˆ๋‹ค.

for(int i=1; i < N; i++) {
    for(int j=0; j<N-i; j++) {
    // ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰-i ์›์†Œ๊นŒ์ง€ ๋น„๊ต!
    }
}

์ „์ฒด์ ์œผ๋กœ ์‚ฌ์ดํด์€ N-1๋ฒˆ ๋ฐ˜๋ณต๋˜๊ณ , ๋‚ด๋ถ€์˜ for๋ฌธ์€ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ N-i ๋ฒˆ์งธ ์›์†Œ๊นŒ์ง€ ๋น„๊ต๋ฅผ ํ•ด๋‚˜๊ฐ€๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

2. ์„œ๋กœ ๋น„๊ตํ•˜์—ฌ ์•ž ์›์†Œ๊ฐ€ ๋” ํฌ๋‹ค๋ฉด ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•ด์ค๋‹ˆ๋‹ค.

if( arr[j] > arr[j+1] ) {
    temp = arr[j];
    arr[j] = arr[j+1];
    arr[j+1] = temp;
}

 

 

์ „์ฒด ์ฝ”๋“œ

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

 

๋ฐ˜์‘ํ˜•