선택 정렬
처리되지 않은 데이터 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것을 반복한다.
시간 복잡도: O(n^2)
선택 정렬 동작 과정
0) 정렬할 데이터를 준비
1) 처리되지 않은 데이터 중 가장 작은 값인 '0'을 선택하여 가장 앞의 '7'과 바꾼다.
2) 처리되지 않은 데이터 중 가장 작은 값인 '1'을 선택하여 가장 앞의 '5'과 바꾼다.
3) 처리되지 않은 데이터 중 가장 작은 값인 '2'를 선택하여 가장 앞의 '9'과 바꾼다.
4) 처리되지 않은 데이터 중 가장 작은 값인 '3'을 선택하여 가장 앞의 '7'과 바꾼다.
5) 이러한 과정을 반복하면 다음과 같이 정렬이 된다.
구현 코드
import java.util.*;
public class Main {
public static void main(String[] args) {
int n = 10;
int[] arr = {7, 5, 9, 0, 3, 1, 6, 2, 4, 8};
for (int i = 0; i < n; i++) {
int min_index = i; // 가장 작은 원소의 인덱스
for (int j = i + 1; j < n; j++) {
if (arr[min_index] > arr[j]) {
min_index = j;
}
}
// swap
int temp = arr[i];
arr[i] = arr[min_index];
arr[min_index] = temp;
}
for(int i = 0; i < n; i++) {
System.out.print(arr[i] + " ");
}
}
}
'알고리즘 개념정리' 카테고리의 다른 글
퀵 정렬 (0) | 2022.08.01 |
---|---|
삽입 정렬 (0) | 2022.08.01 |
BFS (Breadth-First Search) (0) | 2022.07.30 |
DFS (Depth-First Search) (0) | 2022.07.30 |
큐 (Queue) (0) | 2022.07.29 |