Java/알고리즘
선택 정렬(Selection Sort)
heoheos
2023. 3. 27. 11:49
동빈나 실전 알고리즘 강좌(Algorithm Programming Tutorial) 참고
https://www.youtube.com/playlist?list=PLRx0vPvlEmdDHxCvAQS1_6XV4deOwfVrz
실전 알고리즘 강좌 (Algorithm Programming Tutorial)
www.youtube.com
선택 정렬(Selection Sort)
가장 작은 것을 선택해서 제일 앞으로 보내자
순차적으로 숫자를 하나씩 읽어가면서 가장 작은 수를 저장한시가 뒤 앞의 큰 숫자와 자리를 바꾸면서 정렬하는 알고리즘
시간 복잡도 : O(N^2)
package algorithmProgramming;
public class SelectionSort {
public static void main(String[] args) {
// SelectionSort 선택정렬
// "가장 작은 것을 선택해서 제일 앞으로 보내자"
int[] numbers = { 1, 10, 5, 8, 7, 6, 4, 3, 2, 9 };
int minIndex = 0;
for (int i = 0; i < numbers.length; i++) {
int min = 9999; // min은 변수 j를 갖는 for문 들어가기 직전에 배열에 없는 가장 큰 수로 초기화 되어야 함
for (int j = i; j < numbers.length; j++) {
if (numbers[j] < min) {
min = numbers[j];
minIndex = j;
}
}
// 찾은 min을 numbers[i]와 자리바꾸기 => 작은 수 앞 쪽으로 이동
int tmp = numbers[i];
numbers[i] = min; // min이 9999로 초기화가 되어 안쪽 for문을 돌면서 무조건 값이 변하게 됨
numbers[minIndex] = tmp;
}
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i] + " ");
}
} // main
}