Search

๋ฒ„๋ธ”์ •๋ ฌ

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

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

ํ•ต์‹ฌ ์š”์†Œ

โ€ข
์ธ์ ‘ํ•œ ๋‘ ์›์†Œ๋ฅผ ๋น„๊ตํ•˜์—ฌ ๊ตํ™˜
โ€ข
ํ•œ ๋ฒˆ์˜ ์ˆœํšŒ๋งˆ๋‹ค ๊ฐ€์žฅ ํฐ ์›์†Œ๊ฐ€ ๋งจ ๋’ค๋กœ ์ด๋™
โ€ข
n-1๋ฒˆ์˜ ์ˆœํšŒ๋กœ ์ „์ฒด ์ •๋ ฌ ์™„๋ฃŒ

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

์ตœ์„ ์˜ ๊ฒฝ์šฐ
O(n)
ํ‰๊ท ์˜ ๊ฒฝ์šฐ
O(nยฒ)
์ตœ์•…์˜ ๊ฒฝ์šฐ
O(nยฒ)

์ฃผ์š” ํŠน์ง•

โ€ข
๊ตฌํ˜„์ด ๋งค์šฐ ๊ฐ„๋‹จํ•จ
โ€ข
์•ˆ์ • ์ •๋ ฌ(Stable Sort)
โ€ข
์ œ์ž๋ฆฌ ์ •๋ ฌ(In-place Sort)
โ€ข
๋น„ํšจ์œจ์ ์ธ ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ์ธํ•ด ์‹ค๋ฌด์—์„œ๋Š” ์ž˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ

์˜ˆ์‹œ ์ฝ”๋“œ

์ง์ ‘ ๊ตฌํ˜„

public class BubbleSort { 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 - 1 - i; 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 (!swapped) break; } } public static void main(String[] args) { int[] arr = { 5, 2, 9, 1, 5, 6 }; bubbleSort(arr); for (int num : arr) { System.out.print(num + " "); } } }
Java
๋ณต์‚ฌ