Preparing Coding Test/Algorithm
[자료구조/Java] 선택 정렬(Selection Sort)
weero
2020. 8. 20. 15:21
배열을 돌면서 작은 값부터 하나씩 앞으로 차곡차곡 옮기는 것
- 처음부터 끝까지 돌면서 가장 작은 값을 시작점의 숫자와 swap → 두번째부터 끝까지 돌면서···
- 시간복잡도 : O(n^2)
코드
public class Test{
private static void selectionSort(int[] arr){
selectionSort(arr, 0);
}
private static void selectionSort(int[] arr, int start){
if(start < arr.length-1){
int min_index = start;
for(int i=start; i<arr.length; i++){
if(arr[i] < arr[min_index]) min_index = i;
}
swap(arr, start, min_index);
selectionSort(arr, start+1);
}
}
private static void swap(int[] arr, int start, int min_index){
int tmp = arr[start];
arr[start] = arr[min_index];
arr[min_index] = tmp;
}
private static void printArray(int[] arr){
for(int data : arr){
System.out.print(data+", ");
}
System.out.println();
}
public static void main(String[] args){
int[] arr = {3, 6, 1, 8, 2, 4};
printArray(arr);
SelectionSort(arr);
printArray(arr);
}
}