반응형
선택정렬이란
- 버블정렬과 유사한 알고리즘으로, 해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 어떤 원소를 넣을지 선택하는 알고리즘이다.
- 첫번째 자료를 두번째 자료부터 마지막 자료까지 차례대로 비교해가면서 가장 우선순위가 높은 값을 찾아 배열 첫번째에 위치 시키고 원래 해당 자리에 있던 원소와 자리를 바꾼다.
- 시간 복잡도 : O(n^2)
# include <stdio.h>
# define SWAP(x, y, temp) ( (temp)=(x), (x)=(y), (y)=(temp) )
# define MAX_SIZE 5
// 선택 정렬
void selection_sort(int list[], int n){
int i, j, least, temp;
// 마지막 숫자는 자동으로 정렬되기 때문에 (숫자 개수-1) 만큼 반복한다.
for(i=0; i<n-1; i++){
least = i;
// 최솟값을 탐색한다.
for(j=i+1; j<n; j++){
if(list[j]<list[least])
least = j;
}
// 최솟값이 자기 자신이면 자료 이동을 하지 않는다.
if(i != least){
SWAP(list[i], list[least], temp);
}
}
}
void main(){
int i;
int n = MAX_SIZE;
int list[n] = {9, 6, 7, 3, 5};
// 선택 정렬 수행
selection_sort(list, n);
// 정렬 결과 출력
for(i=0; i<n; i++){
printf("%d\n", list[i]);
}
}
참고자료 : https://gyoogle.dev/blog/algorithm/Selection%20Sort.html
반응형
'CS > 자료구조' 카테고리의 다른 글
[자료구조] 퀵 정렬(Quick Sort) (0) | 2024.01.15 |
---|---|
[자료구조] 병합 정렬(Merge Sort) (0) | 2024.01.15 |
[자료구조] 힙 정렬(Heap Sort) (0) | 2024.01.15 |
[자료구조] 삽입정렬(Insertion Sort) (0) | 2024.01.15 |
[자료구조] 버블정렬(Bubble Sort) (0) | 2024.01.15 |