๋ฒ„๋ธ” ์ •๋ ฌ์€ ๋‘ ์ธ์ ‘ํ•œ ์š”์†Œ๋ฅผ ๋น„๊ตํ•˜์—ฌ ํฌ๊ธฐ๊ฐ€ ๋” ํฐ ๊ฐ’์„ ๋’ค๋กœ ์ด๋™์‹œํ‚ค๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

์ด๋ฆ„์ฒ˜๋Ÿผ "๊ฑฐํ’ˆ(bubble)"์ด ์œ„๋กœ ์˜ฌ๋ผ์˜ค๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„๋ธ” ์ •๋ ฌ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

๋ฒ„๋ธ” ์ •๋ ฌ์€ ๊ฐ„๋‹จํ•œ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ •๋ ฌ ๊ณผ์ •์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ์œ ์šฉํ•˜๋‹ค.

ํ•˜์ง€๋งŒ ๋ฐฐ์—ด ํฌ๊ธฐ๊ฐ€ ํฌ๊ฑฐ๋‚˜ ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ ๋” ํšจ์œจ์ ์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜(์˜ˆ: ๋ณ‘ํ•ฉ ์ •๋ ฌ, ํ€ต ์ •๋ ฌ)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

๊ทธ๋Ÿผ ๋ฒ„๋ธ” ์ •๋ ฌ์˜ ๋…ผ๋ฆฌ์  ๊ณผ์ • , ์ฝ”๋“œ ๊ตฌํ˜„,  ํŠน์ง•๊ณผ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ตœ์ ํ™”์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.


<1> ๋…ผ๋ฆฌ์  ๊ณผ์ •

1. ๋ฐฐ์—ด ํƒ์ƒ‰ :

๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋‘ ์ธ์ ‘ํ•œ ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค.

2. ๊ตํ™˜(Swap) :

๋‘ ๊ฐ’ ์ค‘ ์•ž์˜ ๊ฐ’์ด ๋’ค์˜ ๊ฐ’๋ณด๋‹ค ํฌ๋‹ค๋ฉด ์œ„์น˜๋ฅผ ๋ฐ”๊พผ๋‹ค. ์ด๋Š” ์ž‘์€ ๊ฐ’์ด ์•ž์œผ๋กœ, ํฐ ๊ฐ’์ด ๋’ค๋กœ ์ด๋™ํ•˜๋„๋ก ๋งŒ๋“ ๋‹ค.

3. ๊ฐ€์žฅ ํฐ ๊ฐ’ ๋ฐฐ์น˜ :

์ฒซ ๋ฒˆ์งธ ๋ฐ˜๋ณต์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์€ ๋ฐฐ์—ด์˜ ๋งจ ๋์— ์œ„์น˜ํ•œ๋‹ค.

4. ๋ฐ˜๋ณต :

์œ„์˜ ๊ณผ์ •์„ ๋ฐฐ์—ด ํฌ๊ธฐ๋งŒํผ ๋ฐ˜๋ณตํ•œ๋‹ค. ๋งค ๋ฐ˜๋ณต๋งˆ๋‹ค ๋น„๊ต ๋Œ€์ƒ ๋ฒ”์œ„๋Š” ์ค„์–ด๋“ ๋‹ค.

์ด๋ฏธ ์ •๋ ฌ๋œ ๊ฐ’์€ ๋‹ค์‹œ ๋น„๊ตํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ n-1,n-2...์‹์œผ๋กœ ๋ฒ”์œ„๋ฅผ ์ขํžŒ๋‹ค. 

5. ์ •๋ ฌ ์™„๋ฃŒ:

๋ฐฐ์—ด์ด ์™„์ „ํžˆ ์ •๋ ฌ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์† ๋น„๊ตํ•˜๊ณ  ๊ตํ™˜ํ•œ๋‹ค.


<2> ๋ฒ„๋ธ” ์ •๋ ฌ์˜ ๊ตฌํ˜„

import java.util.Arrays;

public class BubbleSort {
   public static void bubbleSort(int[] arr) {
       int n = arr.length;
       
       // ๋ฐฐ์—ด ํฌ๊ธฐ๋งŒํผ ๋ฐ˜๋ณต
       for (int i = 0; i < n-1; i++) {
            // ๋‚ด๋ถ€ ๋ฐ˜๋ณต๋ฌธ : ๋น„๊ต ๋Œ€์ƒ ๋ฒ”์œ„๋ฅผ ์ ์  ์ค„์ž„
            for (int j = 0; j < n -1 -i; j++) {
                 // ์•ž์˜ ๊ฐ’์ด ๋’ค์˜ ๊ฐ’๋ณด๋‹ค ํฌ๋ฉด ๊ตํ™˜
                 if (arr[j] > arr[j + 1]) {
                     // Swap(๊ตํ™˜) ๋กœ์ง
                     int temp = arr[j];
                     arr[j] = arr[j + 1];
                     arr[j + 1] = temp;
                 }
            }
       }
   }
   public static void main(String[] args) {
     int[] arr = {5, 3, 8, 4, 2};
        System.out.println("Before Sorting: " + Arrays.toString(arr));
        bubbleSort(arr);
        System.out.println("After Sorting: " + Arrays.toString(arr));
    }
   }
}

 

 

์‚ฌ์ „ ์ค€๋น„

1. ๋ฐฐ์—ด์˜ ์ˆซ์ž ์ ๊ธฐ:
• ์ฃผ์–ด์ง„ ๋ฐฐ์—ด [5, 3, 8, 4, 2]์˜ ์ˆซ์ž๋ฅผ ํฌ์ŠคํŠธ์ž‡์— ํ•˜๋‚˜์”ฉ ์ ์Šต๋‹ˆ๋‹ค.
• ํฌ์ŠคํŠธ์ž‡ ํ•˜๋‚˜์— ์ˆซ์ž ํ•˜๋‚˜์”ฉ ์ ์–ด์„œ ์ด 5์žฅ์„ ์ค€๋น„ํ•˜์„ธ์š”.
• ์˜ˆ: 5, 3, 8, 4, 2
2. ๋ฐฐ์—ด ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์น˜:
• ํ…Œ์ด๋ธ” ์œ„์— ์ˆซ์ž ์ˆœ์„œ๋Œ€๋กœ ํฌ์ŠคํŠธ์ž‡์„ ๋‚˜๋ž€ํžˆ ๋†“์œผ์„ธ์š”.
• ์˜ˆ: 5, 3, 8, 4, 2

๋ฒ„๋ธ” ์ •๋ ฌ ๊ณผ์ •

์ฒซ ๋ฒˆ์งธ ๋ผ์šด๋“œ (๋งจ ํฐ ์ˆซ์ž ์ฐพ๊ธฐ)

1. ์ฒซ ๋ฒˆ์งธ ๋น„๊ต:
• ์ฒซ ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(5)๊ณผ ๋‘ ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(3)์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
• ๋‘˜ ์ค‘ ํฐ ์ˆซ์ž๊ฐ€ ๋’ค๋กœ ๊ฐ€์•ผ ํ•ด์š”.
• 5 > 3์ด๋‹ˆ๊นŒ ์ž๋ฆฌ ๋ฐ”๊พธ๊ธฐ!
• ๊ฒฐ๊ณผ: 3, 5, 8, 4, 2
2. ๋‘ ๋ฒˆ์งธ ๋น„๊ต:
• ๋‘ ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(5)๊ณผ ์„ธ ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(8)์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
• 5 < 8์ด๋‹ˆ๊นŒ ๊ทธ๋Œ€๋กœ ๋‘๊ธฐ!
• ๊ฒฐ๊ณผ: 3, 5, 8, 4, 2
3. ์„ธ ๋ฒˆ์งธ ๋น„๊ต:
• ์„ธ ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(8)๊ณผ ๋„ค ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(4)์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
• 8 > 4์ด๋‹ˆ๊นŒ ์ž๋ฆฌ ๋ฐ”๊พธ๊ธฐ!
• ๊ฒฐ๊ณผ: 3, 5, 4, 8, 2
4. ๋„ค ๋ฒˆ์งธ ๋น„๊ต:
• ๋„ค ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(8)๊ณผ ๋‹ค์„ฏ ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(2)์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
• 8 > 2์ด๋‹ˆ๊นŒ ์ž๋ฆฌ ๋ฐ”๊พธ๊ธฐ!
• ๊ฒฐ๊ณผ: 3, 5, 4, 2, 8

์ฒซ ๋ฒˆ์งธ ๋ผ์šด๋“œ ๋:
  ๊ฐ€์žฅ ํฐ ์ˆซ์ž 8์ด ๋งจ ๋’ค๋กœ ๊ฐ”์–ด์š”.
----
๋‘ ๋ฒˆ์งธ ๋ผ์šด๋“œ (๋‘ ๋ฒˆ์งธ๋กœ ํฐ ์ˆซ์ž ์ฐพ๊ธฐ)

1. ์ฒซ ๋ฒˆ์งธ ๋น„๊ต:
• ์ฒซ ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(3)๊ณผ ๋‘ ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(5)์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
• 3 < 5์ด๋‹ˆ๊นŒ ๊ทธ๋Œ€๋กœ ๋‘๊ธฐ!
• ๊ฒฐ๊ณผ: 3, 5, 4, 2, 8
2. ๋‘ ๋ฒˆ์งธ ๋น„๊ต:
• ๋‘ ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(5)๊ณผ ์„ธ ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(4)์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
• 5 > 4์ด๋‹ˆ๊นŒ ์ž๋ฆฌ ๋ฐ”๊พธ๊ธฐ!
• ๊ฒฐ๊ณผ: 3, 4, 5, 2, 8
3. ์„ธ ๋ฒˆ์งธ ๋น„๊ต:
• ์„ธ ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(5)๊ณผ ๋„ค ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(2)์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
• 5 > 2์ด๋‹ˆ๊นŒ ์ž๋ฆฌ ๋ฐ”๊พธ๊ธฐ!
• ๊ฒฐ๊ณผ: 3, 4, 2, 5, 8

๋‘ ๋ฒˆ์งธ ๋ผ์šด๋“œ ๋:
   ๋‘ ๋ฒˆ์งธ๋กœ ํฐ ์ˆซ์ž 5๊ฐ€ ๋„ค ๋ฒˆ์งธ ์ž๋ฆฌ์— ๊ณ ์ •!
----
์„ธ ๋ฒˆ์งธ ๋ผ์šด๋“œ (์„ธ ๋ฒˆ์งธ๋กœ ํฐ ์ˆซ์ž ์ฐพ๊ธฐ)

1. ์ฒซ ๋ฒˆ์งธ ๋น„๊ต:
• ์ฒซ ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(3)๊ณผ ๋‘ ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(4)์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
• 3 < 4์ด๋‹ˆ๊นŒ ๊ทธ๋Œ€๋กœ ๋‘๊ธฐ!
• ๊ฒฐ๊ณผ: 3, 4, 2, 5, 8
2. ๋‘ ๋ฒˆ์งธ ๋น„๊ต:
• ๋‘ ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(4)๊ณผ ์„ธ ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(2)์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
• 4 > 2์ด๋‹ˆ๊นŒ ์ž๋ฆฌ ๋ฐ”๊พธ๊ธฐ!
• ๊ฒฐ๊ณผ: 3, 2, 4, 5, 8

•. ์„ธ ๋ฒˆ์งธ ๋ผ์šด๋“œ ๋:
 - ์„ธ ๋ฒˆ์งธ๋กœ ํฐ ์ˆซ์ž 4๊ฐ€ ์„ธ ๋ฒˆ์งธ ์ž๋ฆฌ์— ๊ณ ์ •!

----
๋„ค ๋ฒˆ์งธ ๋ผ์šด๋“œ (๋งˆ์ง€๋ง‰ ์ˆซ์ž ์ •๋ ฌ)

1. ์ฒซ ๋ฒˆ์งธ ๋น„๊ต:
• ์ฒซ ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(3)๊ณผ ๋‘ ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž‡(2)์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
• 3 > 2์ด๋‹ˆ๊นŒ ์ž๋ฆฌ ๋ฐ”๊พธ๊ธฐ!
• ๊ฒฐ๊ณผ: 2, 3, 4, 5, 8


ํฌ์ŠคํŠธ์ž‡์ด ์™„์ „ํžˆ ์ •๋ ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!
• ์ตœ์ข… ๋ฐฐ์—ด: 2, 3, 4, 5, 8

์ถ”๊ฐ€ ํŒ

• ์ •๋ ฌ์ด ๋๋‚œ ํ›„, ๊ฐ ๋ผ์šด๋“œ์—์„œ ๋ฌด์—‡์ด ๋ณ€ํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ.
• ๊ฐ ๋ผ์šด๋“œ๊ฐ€ ๋๋‚  ๋•Œ๋งˆ๋‹ค ์–ด๋–ค ์ˆซ์ž๊ฐ€ ํ™•์ •๋˜์—ˆ๋Š”์ง€ ์•Œ์•„๋‘๊ธฐ.
• ์˜ˆ: “์ด๋ฒˆ ๋ผ์šด๋“œ์—์„œ๋Š” ๊ฐ€์žฅ ํฐ ์ˆซ์ž 8์ด ๊ณ ์ •๋˜์—ˆ์–ด!”
• ๋งˆ์ง€๋ง‰์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์„ ๋ณด๊ณ  ๋ฒ„๋ธ” ์ •๋ ฌ์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ–ˆ๋Š”์ง€ ์ •๋ฆฌํ•ด๋ณด์ž.

์ด ๋ฒ„๋ธ” ๋ฐฐ์—ด์˜ ๊ณผ์ •๋„ ์†์œผ๋กœ ์ ์–ด๊ฐ€๋ฉด์„œ ๊ทธ ๊ณผ์ •์„ ์ตํ˜”๋‹ค. ์ ˆ๋Œ€ ์•”๊ธฐ๋Š” ์ง€์–‘...

 

1. ํฐ ์ˆซ์ž๊ฐ€ "๋’ค๋กœ ๋ฐ€๋ ค๋‚˜๋Š”" ๊ณผ์ • :

  - ๋ฒ„๋ธ”์ •๋ ฌ์—์„œ๋Š” ๊ฐ€์žฅ ํฐ ์ˆซ์ž๊ฐ€ ๋น„๊ตํ•  ๋•Œ๋งˆ๋‹ค ๋’ค๋กœ ๋ฐ€๋ ค๋‚˜๋ฉด์„œ ์ •๋ ฌ์ด ๋œ๋‹ค. ์ฒซ๋ฒˆ์งธ ๋ผ์šด๋“œ์—์„œ ๊ฐ€์žฅ ํฐ ์ˆซ์ž 8์„ ๋งจ ๋’ค๋กœ ๋ณด๋‚ธ๊ฒƒ ์ฒ˜๋Ÿผ ๋ง์ด๋‹ค.

2. ๋น„๊ต์™€ ๊ตํ™˜ :

 - ๋‘ ์ˆซ์ž๋ฅผ ๋น„๊ตํ–ˆ์„ ๋•Œ ์•ž์˜ ์ˆซ์ž๊ฐ€ ๋” ํฌ๋ฉด ์ž๋ฆฌ๋ฅผ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•ด์•ผ ์ž‘์€ ์ˆซ์ž๊ฐ€ ์•ž์œผ๋กœ ์˜ค๊ณ , ํฐ ์ˆซ์ž๋Š” ๋’ค๋กœ ๊ฐ„๋‹ค.

3. ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ์ ์  ์ค„์–ด๋“œ๋Š” ๋น„๊ต ๋ฒ”์œ„ :

  - ์ฒ˜์Œ์—๋Š” ๋‹ค์„ฏ ๊ฐœ๋ฅผ ์ „๋ถ€ ๋น„๊ตํ–ˆ์ง€๋งŒ, ํ•œ ๋ผ์šด๋“œ๊ฐ€ ๋๋‚  ๋•Œ๋งˆ๋‹ค ์ •๋ ฌ์ด ์™„๋ฃŒ๋œ ์ˆซ์ž๋Š” ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์•„๋„ ๋๋‹ค. ๊ทธ๋ž˜์„œ ์ ์  ๋น„๊ตํ•  ์ˆซ์ž๊ฐ€ ์ค„์–ด๋“ ๋‹ค. ๊ทธ๋ž˜์„œ j์— ๊ด€ํ•œ for๋ฌธ์€ for(int j = 0; j < n-1-i ; j++)๋กœ ์„ค์ •ํ•œ ๊ฒƒ์ด๋‹ค.

 

4. ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋Š” ์–ด๋–ป๊ฒŒ ์ •ํ•ด์กŒ์„๊นŒ?

 - ์ œ์ผ ํฐ ์ˆซ์ž๊ฐ€ ๋น„๊ตํ•˜๋ฉด์„œ ๋งจ ๋’ค๋กœ ๊ฐ”๋‹ค.

5. ์™œ ์ ์  ๋น„๊ตํ•˜๋Š” ์ˆซ์ž๊ฐ€ ์ค„์–ด๋“ค์—ˆ์„๊นŒ?

 - ํ•œ ๋ฒˆ ๋๋‚  ๋•Œ๋งˆ๋‹ค ์ œ์ผ ํฐ ์ˆซ์ž๊ฐ€ ๋’ค๋กœ ๊ฐ€์„œ ์ •๋ ฌ์ด ๋์œผ๋ฏ€๋กœ.

6. ์ž๋ฆฌ ๋ฐ”๊ฟˆ์€ ์–ธ์ œ ํ–ˆ์„๊นŒ?

 - ์•ž ์ˆซ์ž๊ฐ€ ๋” ํด ๋•Œ ์ž๋ฆฌ๋ฅผ ๋ฐ”๊ฟจ๋‹ค.

7. ์–ด๋–ค ์ˆœ์„œ๋กœ ์ •๋ ฌ๋˜์—ˆ๋Š”๊ฐ€?

 - ์ฒ˜์Œ์—๋Š” ํฐ ์ˆซ์ž๋ถ€ํ„ฐ ๋’ค๋กœ ๊ฐ€๊ณ , ๊ทธ๋‹ค์Œ์—๋Š” ๋‘๋ฒˆ์งธ ํฐ ์ˆซ์ž๊ฐ€ ๋’ค๋กœ ๊ฐ„๋‹ค. ๋งˆ์ง€๋ง‰์—๋Š” ์ž‘์€ ์ˆซ์ž๋“ค์ด ์ œ์ž๋ฆฌ๋ฅผ ์ฐพ๋Š”๋‹ค. 


<3> ๋ฒ„๋ธ” ์ •๋ ฌ์˜ ํŠน์ง•

 

1. ์‹œ๊ฐ„ ๋ณต์žก๋„:

   • ์ตœ์•…, ํ‰๊ท : O(n^2) (๋ฐ˜๋ณต๋ฌธ ๋‘ ๋ฒˆ)

   • ์ตœ์„ : O(n) (์ด๋ฏธ ์ •๋ ฌ๋œ ๊ฒฝ์šฐ)

2. ๊ณต๊ฐ„ ๋ณต์žก๋„:

   • O(1) (์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ์—†์Œ)

3. ๋‹จ์ :

   • ๋ฐฐ์—ด ํฌ๊ธฐ๊ฐ€ ํด์ˆ˜๋ก ์†๋„๊ฐ€ ๋งค์šฐ ๋А๋ ค์ง‘๋‹ˆ๋‹ค.

   • ๋น„๊ต ๋ฐ ๊ตํ™˜ ์ž‘์—…์ด ๋งŽ์•„ ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

4. ์žฅ์ :

   • ๊ตฌํ˜„์ด ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

   • ์ž‘์€ ๋ฐฐ์—ด์—์„œ๋Š” ์ถฉ๋ถ„ํžˆ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


<4> ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ตœ์ ํ™”

์ด๋ฏธ ์ •๋ ฌ๋œ ๊ฒฝ์šฐ ๋ฐ˜๋ณต ์ค‘๋‹จ

 

๋ฒ„๋ธ” ์ •๋ ฌ์˜ ๋‹จ์ ์€ ๋ถˆํ•„์š”ํ•œ ๋ฐ˜๋ณต์ด ๋งŽ๋‹ค๋Š” ์ ์ด๋‹ค.

๋ฐฐ์—ด์ด ์ด๋ฏธ ์ •๋ ฌ๋œ ๊ฒฝ์šฐ ๋”์ด์ƒ ๋น„๊ต์™€ ๊ตํ™˜์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฏ€๋ฃŒ, ์ด๋ฅผ ์ฒดํฌํ•˜๋Š” Flag ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

public staic void optimizedBubbleSort(int[] arr) {
    int n = arr.length;
    
    for (int i = 0; i < n -1; i++) {
        boolean swapped = false; // ๊ตํ™˜ ๋ฐœ์ƒ ์—ฌ๋ถ€ ํ™•์ธ
        
        for (int j = 0; j < n -1 -i; j++) {
            if (arr[j] > arr[j+1]) {
                // Swap
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
                swapped = true;
            }
        }
        // ๊ตํ™˜์ด ์—†์œผ๋ฉด ์ •๋ ฌ ์™„๋ฃŒ
        if (!swapped) break;
    }
}

 

 i=0์ผ ๋•Œ 1๋ผ์šด๋“œ, i=1์ผ ๋•Œ 2๋ผ์šด๋“œ์ด๋‹ค.

 ๊ตํ™˜์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์„ ๋งŒ๋“ค์–ด์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•ด๋ณด๊ฒ ๋‹ค.

 

< 5 >๋ผ์šด๋“œ์™€ ๋ฃจํ”„์˜ ๊ด€๊ณ„

1. 1๋ผ์šด๋“œ (i=0):

 • ๋ฐฐ์—ด์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋น„๊ตํ•˜๋ฉฐ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๋งจ ๋’ค๋กœ ๋ณด๋‚ธ๋‹ค.

2. 2๋ผ์šด๋“œ (i=1):

 • ์ด๋ฏธ ๋งจ ๋’ค์— ์ •๋ ฌ๋œ ์ˆซ์ž๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋‹ค์‹œ ๋น„๊ตํ•œ๋‹ค.

 • ์ด ๊ณผ์ •์ด ๊ณ„์† ๋ฐ˜๋ณต๋˜๋ฉฐ, ์ •๋ ฌ์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์ง„ํ–‰๋œ๋‹ค.

3. ๊ตํ™˜์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ:

 • ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์ด๋ผ๋ฉด ์ˆซ์ž๋ฅผ ๋ฐ”๊ฟ€ ํ•„์š”๊ฐ€ ์—†๋‹ค.

•  ์ด๋•Œ swapped = false๋กœ ์œ ์ง€๋˜๋ฉฐ, ๋‹ค์Œ ๋ผ์šด๋“œ๋กœ ๋„˜์–ด๊ฐ€์ง€ ์•Š๊ณ  ๋ฉˆ์ถ˜๋‹ค.

 

๊ตํ™˜์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์˜ˆ์ œ

 

๋ฐฐ์—ด: [1, 2, 3, 4, 5] (์ด๋ฏธ ์ •๋ ฌ๋จ)

 

์ด ๋ฐฐ์—ด๋กœ ์ตœ์ ํ™”๋œ ๋ฒ„๋ธ” ์ •๋ ฌ์„ ์ง„ํ–‰ํ•ด ๋ณด๊ฒ ๋‹ค.

 

1๋ผ์šด๋“œ (i=0):

 

1. ๋น„๊ต: 1๊ณผ 2  1 < 2  ๊ตํ™˜ ์—†์Œ

๊ทธ๋Œ€๋กœ: [1, 2, 3, 4, 5]

2. ๋น„๊ต: 2๊ณผ 3  2 < 3  ๊ตํ™˜ ์—†์Œ

๊ทธ๋Œ€๋กœ: [1, 2, 3, 4, 5]

3. ๋น„๊ต: 3๊ณผ 4  3 < 4  ๊ตํ™˜ ์—†์Œ

๊ทธ๋Œ€๋กœ: [1, 2, 3, 4, 5]

4. ๋น„๊ต: 4๊ณผ 5  4 < 5  ๊ตํ™˜ ์—†์Œ

๊ทธ๋Œ€๋กœ: [1, 2, 3, 4, 5]

 

1๋ผ์šด๋“œ๊ฐ€ ๋๋‚œ ํ›„

 

swapped = false:

   1๋ผ์šด๋“œ ๋™์•ˆ ๊ตํ™˜์ด ํ•œ ๋ฒˆ๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๋‹ค.

   ๋”ฐ๋ผ์„œ ์ด๋ฏธ ๋ฐฐ์—ด์ด ์ •๋ ฌ๋˜์—ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜๋ณต ์ข…๋ฃŒ:

   ์ •๋ ฌ์ด ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋” ์ด์ƒ ๋ผ์šด๋“œ๋ฅผ ์ง„ํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ฉˆ์ถ˜๋‹ค.

 

  ์ตœ์ข… ๋ฐฐ์—ด: [1, 2, 3, 4, 5]

 

 

 

1. ์™œ 1๋ผ์šด๋“œ์—์„œ ๋ฉˆ์ท„์„๊นŒ?

๊ตํ™˜์ด ํ•œ ๋ฒˆ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์•˜์œผ๋‹ˆ๊นŒ!

2. ๊ตํ™˜์ด ์—†์œผ๋ฉด ๋ฌด์Šจ ๋œป์ผ๊นŒ?

์ˆซ์ž๋“ค์ด ์ด๋ฏธ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

3. ๋ผ์šด๋“œ๋งˆ๋‹ค ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ ๊นŒ?

์ˆซ์ž๋“ค์„ ๋น„๊ตํ•ด์„œ ํฐ ์ˆซ์ž๋ฅผ ๋’ค๋กœ ๋ณด๋‚ธ๋‹ค.

 

 

+ Recent posts