Search

선택정렬

선택 μ •λ ¬ (Selection Sort)

선택 정렬은 λ°°μ—΄μ—μ„œ μ΅œμ†Œκ°’μ„ μ°Ύμ•„ 맨 μ•žμ˜ μ›μ†Œμ™€ κ΅ν™˜ν•˜λŠ” 과정을 λ°˜λ³΅ν•˜μ—¬ μ •λ ¬ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€.

핡심 μš”μ†Œ

β€’
배열을 μˆœνšŒν•˜λ©° μ΅œμ†Œκ°’μ„ μ°Ύμ•„ 맨 μ•žλΆ€ν„° μ±„μ›Œλ‚˜κ°€λŠ” 방식
β€’
두 개의 μ„œλΈŒ 리슀트둜 λ‚˜λˆ„μ–΄ μ •λ ¬ 진행
β€’
제자리 μ •λ ¬(in-place sorting) μ•Œκ³ λ¦¬μ¦˜

μ‹œκ°„ λ³΅μž‘λ„

μ΅œμ„ μ˜ 경우
O(nΒ²)
ν‰κ· μ˜ 경우
O(nΒ²)
μ΅œμ•…μ˜ 경우
O(nΒ²)

μ£Όμš” νŠΉμ§•

β€’
μž₯점
β—¦
κ΅¬ν˜„μ΄ κ°„λ‹¨ν•˜κ³  μ΄ν•΄ν•˜κΈ° 쉬움
β—¦
μΆ”κ°€ λ©”λͺ¨λ¦¬ 곡간이 거의 ν•„μš”ν•˜μ§€ μ•ŠμŒ
β—¦
μ•ˆμ •μ μΈ μ •λ ¬ 방식
β€’
단점
β—¦
μ‹œκ°„ λ³΅μž‘λ„κ°€ O(nΒ²)으둜 λΉ„νš¨μœ¨μ 
β—¦
데이터 양이 λ§Žμ„μˆ˜λ‘ μ„±λŠ₯ μ €ν•˜

μ˜ˆμ‹œ μ½”λ“œ

직접 κ΅¬ν˜„

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[minIdx]; arr[minIdx] = arr[i]; arr[i] = temp; } } }
Java
볡사