선택 정렬은 대상 데이터에서 최대나 최소 데이터를 데이터가 나열된 순으로 찾아가며 선택하는 방법 입니다. 선택 정렬은 구현 방법이 복잡하고, 시간 복잡도 또한 O(n²)으로 효율적이지 않아 많이 사용하지 않습니다.
정렬 과정
- 남은 정렬 부분에서 최솟값 또는 최댓값 탐색
- 남은 정렬 부분에서 가장 앞에 있는 데이터와 선택된 데이터 swap
- 가장 앞에 있는 데이터의 위치를 변경해 남은 정렬 부분의 범위 축소
- 남은 정렬 부분이 없을 때까지 반복
소스 코드
void selectionSort(int[] list) {
int indexMin, temp;
for (int i = 0; i < list.length - 1; i++) {
indexMin = i;
for (int j = i + 1; j < list.length; j++) {
if (list[j] < list[indexMin]) {
indexMin = j;
}
}
temp = list[indexMin];
list[indexMin] = list[i];
list[i] = temp;
}
}
'Algorithm > 이론' 카테고리의 다른 글
퀵 정렬 (Quick Sort) - JAVA (0) | 2023.05.17 |
---|---|
삽입 정렬 (Insertion Sort) - JAVA (0) | 2023.05.17 |
버블 정렬 (Bubble Sort) - JAVA (0) | 2023.05.17 |
스택(Stack)과 큐(Queue) (0) | 2023.05.17 |
구간 합 (0) | 2023.05.16 |