1.1 정렬_선택정렬
2021. 5. 27. 18:06ㆍ알고리즘
728x90
선택정렬 : 가장 작은 값을 선택해서 제일앞으로 보내는 알고리즘(오름차순)
- 시간복잡도 : O(N^2)
ex)
int[] arr = {1, 3, 4, 5, 6, 2, 8, 7}; - 오름차순 정렬
- arr[0]~arr[arr.lenth-1] 까지 최소 값을 찾아서 arr[0]와 스와프
- arr[1]~arr[arr.lenth-1] 까지 최소 값을 찾아서 arr[1]와 스와프
.
.
.
.
반복
arr = {1, 2, 3, 4, 5, 6, 7, 8}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
public class Blog {
public static void main(String[] args) {
int[] arr = { 1, 3, 4, 5, 6, 2, 8, 7 };
int temp;
for (int i = 0; i < arr.length; i++) {
int min = 99999;
int index = 0;
for (int j = i; j < arr.length; j++) {
if (arr[j] < min) {
temp = min;
min = arr[j];
index = j;
}
}
arr[index] = arr[i];
arr[i] = min;
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + ", ");
}
}
}
|
cs |
선택정렬의 연산은 배열의 길이 N에 대히여
N * { ( N + 1 ) / 2 } 번 연산 하므로
시간복잡도는 O(N^2)이다.
728x90
'알고리즘' 카테고리의 다른 글
1.4 정렬 - 퀵 정렬 (Quick sort) (0) | 2021.05.31 |
---|---|
1.3 정렬_삽입정렬 (0) | 2021.05.28 |
1.2 정렬_버블정렬 (0) | 2021.05.28 |
1. 알고리즘 - 시간복잡도 (0) | 2021.05.27 |