Coding Planet

๋ฒ„๋ธ”์ •๋ ฌ - ์ž๋ฐ”๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ๋ณธ๋ฌธ

๐ŸŽ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ/์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฒ„๋ธ”์ •๋ ฌ - ์ž๋ฐ”๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ

jhj.sharon 2023. 8. 21. 16:16
๋ฐ˜์‘ํ˜•

| ๋ฒ„๋ธ”์ •๋ ฌ(Bubble Sort)์ด๋ž€?

  • ๊ฐ„๋‹จํ•œ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘์˜ ํ•˜๋‚˜๋กœ ์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด, ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํฐ ๊ฐ’์ด ๋งˆ์น  "๋ฒ„๋ธ”"์ฒ˜๋Ÿผ ๋ฐฐ์—ด์˜ ๋์œผ๋กœ "๋– ์˜ค๋ฅด๊ฒŒ"ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค.

 

| ๋ฒ„๋ธ”์ •๋ ฌ(Bubble Sort)์˜ ์ž‘๋™์›๋ฆฌ

1) ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ๊นŒ์ง€ ์ˆœ์ฐจ์ ์œผ๋กœ ์ด๋™ํ•˜๋ฉด์„œ ์ธ์ ‘ํ•œ ํ•ญ๋ชฉ์„ ๋น„๊ตํ•œ๋‹ค.

2) ์ธ์ ‘ํ•œ ๋‘ ํ•ญ๋ชฉ์„ ๋น„๊ตํ•˜๋ฉด์„œ ์™ผ์ชฝ ํ•ญ๋ชฉ์ด ์˜ค๋ฅธ์ชฝ ํ•ญ๋ชฉ๋ณด๋‹ค ํฌ๋ฉด ๋‘ ํ•ญ๋ชฉ์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊พผ๋‹ค.

3) ์œ„์˜ ๊ณผ์ •์„ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ๋ฐ˜๋ณตํ•œ๋‹ค.

4) ์œ„์˜ 3๋‹จ๊ณ„๋ฅผ ๋ฐฐ์—ด์˜ ํ•ญ๋ชฉ ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•˜๋ฉด ๋ฐฐ์—ด์ด ์ •๋ ฌ๋œ๋‹ค.

 

์˜ˆ์‹œ)

1 5 3 9 7 ๋ฐฐ์—ด์ด ๋ฒ„๋ธ” ์ •๋ ฌ๋˜๋Š” ๊ณผ์ •์„ ๋‹จ๊ณ„๋ณ„๋กœ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ดˆ๊ธฐ ๋ฐฐ์—ด

1 5 3 9 7

1์ฐจ ๋ฐ˜๋ณต (i=0)

  1. 1๊ณผ 5๋ฅผ ๋น„๊ต: ์ •๋ ฌ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. 5์™€ 3์„ ๋น„๊ต: 5๊ฐ€ 3๋ณด๋‹ค ํฌ๋ฏ€๋กœ ์œ„์น˜๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. => 1 3 5 9 7
  3. 5์™€ 9๋ฅผ ๋น„๊ต: ์ •๋ ฌ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  4. 9์™€ 7์„ ๋น„๊ต: 9๊ฐ€ 7๋ณด๋‹ค ํฌ๋ฏ€๋กœ ์œ„์น˜๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. => 1 3 5 7 9

2์ฐจ ๋ฐ˜๋ณต (i=1)

  1. 1๊ณผ 3์„ ๋น„๊ต: ์ •๋ ฌ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. 3๊ณผ 5๋ฅผ ๋น„๊ต: ์ •๋ ฌ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  3. 5์™€ 7๋ฅผ ๋น„๊ต: ์ •๋ ฌ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ด ์‹œ์ ์—์„œ ์ถ”๊ฐ€์ ์ธ ์ •๋ ฌ์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„๋ธ” ์ •๋ ฌ์€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ์ข… ์ •๋ ฌ๋œ ๋ฐฐ์—ด์€ 1 3 5 7 9๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
์ฐธ๊ณ ๋กœ, ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ถ€๋ถ„(์—ฌ๊ธฐ์„œ๋Š” 9)์„ ๋‹ค์‹œ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด, ๋ฒ„๋ธ” ์ •๋ ฌ์—์„œ๋Š” ๊ฐ ๋ฐ˜๋ณต๋งˆ๋‹ค ๊ฒ€์‚ฌํ•ด์•ผ ํ•˜๋Š” ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ ํ•˜๋‚˜์”ฉ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.


 

| ๋ฒ„๋ธ”์ •๋ ฌ(Bubble Sort)์˜ ํŠน์ง•

(์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ๊ณต๊ฐ„ ๋ณต์žก๋„ : https://sharonprogress.tistory.com/234)

  • ์‹œ๊ฐ„๋ณต์žก๋„ : ํ‰๊ท  ๋ฐ ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n^2) , n์€ ๋ฐฐ์—ด์˜ ํ•ญ๋ชฉ ์ˆ˜
  • ๊ณต๊ฐ„ ๋ณต์žก๋„ : O(1)
  • ์•ˆ์ •์  ์ •๋ ฌ : ๋™์ผํ•œ ๊ฐ’์˜ ์›๋ž˜ ์ˆœ์„œ๊ฐ€ ์ •๋ ฌ ํ›„์—๋„ ์œ ์ง€๋œ๋‹ค.

 

| ๋ฒ„๋ธ”์ •๋ ฌ(Bubble Sort)์˜ ์‚ฌ์šฉ

  • ์œ„์˜ ํŠน์ง•๋“ค๋กœ ์ธํ•ด ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, ํšจ์œจ์ ์ด์ง€ ์•Š์€ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•˜๋‚˜๋กœ ๊ฐ„์ฃผ๋œ๋‹ค. ์‹ค์ œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๋ณด๋‹ค ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜(ํ€ต ์ •๋ ฌ, ๋ณ‘ํ•ฉ ์ •๋ ฌ ๋“ฑ)์ด ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

 

 

 

| ๋ฒ„๋ธ”์ •๋ ฌ(Bubble Sort) Java๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ

  • ์•„๋ž˜ ์ฝ”๋“œ์—์„œ 'bubble Sort' ํ•จ์ˆ˜๋Š” ์ฃผ์–ด์ง„ ๋ฐฐ์—ด 'arr'์„ ๋ฒ„๋ธ” ์ •๋ ฌํ•œ๋‹ค.
  • swapped๋ผ๋Š” ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ ๋ผ์šด๋“œ์—์„œ ์–ด๋–ค ์š”์†Œ๋„ ๊ตํ™˜๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋ฐฐ์—ด์ด ์ด๋ฏธ ์ •๋ ฌ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ๋” ์ด์ƒ์˜ ์ •๋ ฌ์„ ์ค‘๋‹จํ•œ๋‹ค. ์ด๋Š” ๋ฒ„๋ธ” ์ •๋ ฌ์˜ ์„ฑ๋Šฅ์„ ์•ฝ๊ฐ„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์ตœ์ ํ™” ๋ฐฉ๋ฒ•์ด๋‹ค.
public class BubbleSort {
    public static void main(String[] args) {
        int[] arr = {64, 34, 25, 12, 22, 11, 90};
        bubbleSort(arr);
        System.out.println("Sorted array:");
        for (int i : arr) {
            System.out.print(i + " ");
        }
    }

    public static void bubbleSort(int[] arr) {
        int n = arr.length;
        boolean swapped;
        for (int i = 0; i < n - 1; i++) {
            swapped = false;
            for (int j = 0; j < n - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    // swap arr[j] and arr[j+1]
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                    swapped = true;
                }
            }
            // If no two elements were swapped by inner loop, then break
            if (!swapped) {
                break;
            }
        }
    }
}
๋ฐ˜์‘ํ˜•
Comments