Search

์„ ํƒ์ •๋ ฌ

public class SelectionSort { public static void selectionSort(int[] arr) { int n = arr.length; for (int i = 0; i < n - 1; i++) { int minIdx = i; // ํ˜„์žฌ ์œ„์น˜ ์ดํ›„์˜ ๋ชจ๋“  ์›์†Œ๋“ค๊ณผ ๋น„๊ตํ•˜์—ฌ ์ตœ์†Ÿ๊ฐ’ ์ฐพ๊ธฐ for (int j = i + 1; j < n; j++) { if (arr[j] < arr[minIdx]) { minIdx = j; } } // ํ˜„์žฌ ์œ„์น˜์™€ ์ฐพ์€ ์ตœ์†Ÿ๊ฐ’์˜ ์œ„์น˜๋ฅผ ๊ตํ™˜ int temp = arr[i]; arr[i] = arr[minIdx]; arr[minIdx] = 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); selectionSort(arr); System.out.println("์ •๋ ฌ ํ›„ ๋ฐฐ์—ด:"); printArray(arr); } }
Java
๋ณต์‚ฌ

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

์„ ํƒ ์ •๋ ฌ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(nยฒ)์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ถ„์„์„ ํ†ตํ•ด ๋„์ถœ๋ฉ๋‹ˆ๋‹ค:
โ€ข
์™ธ๋ถ€ ๋ฃจํ”„ (i): n๋ฒˆ ๋ฐ˜๋ณต
โ—ฆ
๋ฐฐ์—ด์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ˆœํšŒ (0 ~ n-1)
โ€ข
๋‚ด๋ถ€ ๋ฃจํ”„ (j): (n-i)๋ฒˆ ๋ฐ˜๋ณต
โ—ฆ
์ฒซ ๋ฒˆ์งธ ๋ฐ˜๋ณต: n-1๋ฒˆ ๋น„๊ต
โ—ฆ
๋‘ ๋ฒˆ์งธ ๋ฐ˜๋ณต: n-2๋ฒˆ ๋น„๊ต
โ—ฆ
๋งˆ์ง€๋ง‰ ๋ฐ˜๋ณต: 1๋ฒˆ ๋น„๊ต
๋”ฐ๋ผ์„œ ์ „์ฒด ์—ฐ์‚ฐ ํšŸ์ˆ˜๋Š”:
(n-1) + (n-2) + ... + 2 + 1 = n(n-1)/2
์ด ์ˆ˜์‹์ด ๋‚˜์˜ค๋Š” ๊ณผ์ •์„ ์‚ดํŽด๋ณด๋ฉด:
โ€ข
์ฒซ ๋ฒˆ์งธ ๋ฐ˜๋ณต์—์„œ๋Š” (n-1)๋ฒˆ ๋น„๊ต
โ€ข
๋‘ ๋ฒˆ์งธ ๋ฐ˜๋ณต์—์„œ๋Š” (n-2)๋ฒˆ ๋น„๊ต
โ€ข
์„ธ ๋ฒˆ์งธ ๋ฐ˜๋ณต์—์„œ๋Š” (n-3)๋ฒˆ ๋น„๊ต
์ด๋Ÿฐ ์‹์œผ๋กœ ๊ณ„์†๋˜์–ด ๋งˆ์ง€๋ง‰์—๋Š” 1๋ฒˆ ๋น„๊ตํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์ด๋Š” ๋“ฑ์ฐจ์ˆ˜์—ด์˜ ํ•ฉ ๊ณต์‹์œผ๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
โ€ข
์ฒซ์งธํ•ญ a = (n-1)
โ€ข
๋งˆ์ง€๋ง‰ํ•ญ l = 1
โ€ข
ํ•ญ์˜ ๊ฐœ์ˆ˜ = (n-1)
๋“ฑ์ฐจ์ˆ˜์—ด์˜ ํ•ฉ ๊ณต์‹: (์ฒซ์งธํ•ญ + ๋งˆ์ง€๋ง‰ํ•ญ) ร— ํ•ญ์˜ ๊ฐœ์ˆ˜ รท 2
๋”ฐ๋ผ์„œ ((n-1) + 1) ร— (n-1) รท 2 = n(n-1)/2๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
n(nโˆ’1)2=n22โˆ’n2\frac{n(n-1)}{2} = \frac{n^2}{2} - \frac{n}{2}
๋„ค, ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์—์„œ๋Š” ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š” ์ตœ๊ณ ์ฐจํ•ญ๋งŒ ๋‚จ๊ธฐ๊ณ  ๋‚˜๋จธ์ง€ ํ•ญ๊ณผ ์ƒ์ˆ˜๋Š” ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์œ„ ์‹์—์„œ:
โ€ข
nยฒ/2 - n/2 ์—์„œ nยฒ์ด ์ตœ๊ณ ์ฐจํ•ญ
โ€ข
์ƒ์ˆ˜ 1/2๋Š” ์ œ๊ฑฐ
โ€ข
์ €์ฐจํ•ญ -n/2๋„ ์ œ๊ฑฐ
๋”ฐ๋ผ์„œ ์ตœ์ข…์ ์œผ๋กœ O(nยฒ)๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ์ž…๋ ฅ ํฌ๊ธฐ์˜ ์ œ๊ณฑ์— ๋น„๋ก€ํ•˜์—ฌ ์ฆ๊ฐ€ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ, O(nยฒ)๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

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

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

ํŠน์ง•

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