Search

๋ฒ„๋ธ”์ •๋ ฌ

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-i-1; j++) { // ์ธ์ ‘ํ•œ ๋‘ ์›์†Œ๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ˆœ์„œ๊ฐ€ ์ž˜๋ชป๋˜์–ด ์žˆ์œผ๋ฉด ๊ตํ™˜ if (arr[j] > arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } } // ๋ฐฐ์—ด ์ถœ๋ ฅ์„ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ public static void printArray(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); } // ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋ฉ”์ธ ๋ฉ”์†Œ๋“œ public static void main(String[] args) { int[] arr = {64, 34, 25, 12, 22, 11, 90}; System.out.println("์ •๋ ฌ ์ „ ๋ฐฐ์—ด:"); printArray(arr); bubbleSort(arr); System.out.println("์ •๋ ฌ ํ›„ ๋ฐฐ์—ด:"); printArray(arr); } }
Java
๋ณต์‚ฌ

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

๋ฒ„๋ธ” ์ •๋ ฌ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(nยฒ)์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ถ„์„์„ ํ†ตํ•ด ๋„์ถœ๋ฉ๋‹ˆ๋‹ค:
โ€ข
์™ธ๋ถ€ ๋ฃจํ”„ (i): n-1๋ฒˆ ๋ฐ˜๋ณต โ€ข ๋ฐฐ์—ด์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ˆœํšŒ
โ€ข
๋‚ด๋ถ€ ๋ฃจํ”„ (j): (n-i-1)๋ฒˆ ๋ฐ˜๋ณต โ€ข ์ฒซ ๋ฒˆ์งธ ๋ฐ˜๋ณต: n-1๋ฒˆ ๋น„๊ต โ€ข ๋‘ ๋ฒˆ์งธ ๋ฐ˜๋ณต: n-2๋ฒˆ ๋น„๊ต โ€ข ๋งˆ์ง€๋ง‰ ๋ฐ˜๋ณต: 1๋ฒˆ ๋น„๊ต
๋”ฐ๋ผ์„œ ์ „์ฒด ์—ฐ์‚ฐ ํšŸ์ˆ˜๋Š”:
(n-1) + (n-2) + ... + 2 + 1 = n(n-1)/2
n(nโˆ’1)2=n22โˆ’n2\frac{n(n-1)}{2} = \frac{n^2}{2} - \frac{n}{2}
์ตœ์ข…์ ์œผ๋กœ O(nยฒ)๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

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

๋ฒ„๋ธ” ์ •๋ ฌ์˜ ๊ณต๊ฐ„๋ณต์žก๋„๋Š” O(1)์ž…๋‹ˆ๋‹ค. ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ฃผ์–ด์ง„ ๋ฐฐ์—ด ๋‚ด์—์„œ ์›์†Œ๋“ค์˜ ์œ„์น˜๋งŒ ๊ตํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํŠน์ง•

โ€ข
์•ˆ์ •์„ฑ: ์•ˆ์ • ์ •๋ ฌ (๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„ ์š”์†Œ๋“ค์˜ ์ƒ๋Œ€์  ์ˆœ์„œ๊ฐ€ ์œ ์ง€๋จ)
โ€ข
์ œ์ž๋ฆฌ ์ •๋ ฌ: ์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ํ•„์š” ์—†์Œ
โ€ข
์‹œ๊ฐ„๋ณต์žก๋„ โ€ข ์ตœ์„ ์˜ ๊ฒฝ์šฐ: O(n) - ์ด๋ฏธ ์ •๋ ฌ๋œ ๊ฒฝ์šฐ โ€ข ํ‰๊ท ์˜ ๊ฒฝ์šฐ: O(nยฒ) โ€ข ์ตœ์•…์˜ ๊ฒฝ์šฐ: O(nยฒ) - ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๊ฒฝ์šฐ
โ€ข
๊ตฌํ˜„์ด ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›€
โ€ข
ํฐ ๋ฐ์ดํ„ฐ์…‹์—๋Š” ๋น„ํšจ์œจ์ ์ด์ง€๋งŒ, ์ž‘์€ ๋ฐ์ดํ„ฐ์…‹์—์„œ๋Š” ๊ดœ์ฐฎ์€ ์„ฑ๋Šฅ์„ ๋ณด์ž„