알고리즘
[알고리즘]정렬 알고리즘 - 선택 정렬
당니요
2023. 11. 30. 23:54
선택 정렬(Selection Sort)
- 입력 배열 전체에서 최솟값을 선택하여 배열의 0번 원소와 자리를 바꾸고,
다음엔 0번 원소를 제외한 나머지 원소에서 최솟값을 선택하여, 배열의 1번 원소와 자리를 바꿈
>> 마지막에 2개의 원소 중 작은 것을 선택하여 자리를 바꿈

알고리즘
입력: 크기가 n인 배열 A
출력: 정렬된 배열 A
for i=0 to n-2
min = i
for j=i+1 to n-1
if A[j] < A[min]
min=j
A[i] <-> A[min]
return A
시간 복잡도
외부 for루프는 (n-1)번 수행
-i=0일 때 내부 for루프는 (n-1)번 수행
-i=1일 때 내부 for루프는 (n-2)번 수행
...
-마지막으로 1번 수행
내부의 for루프가 수행되는 총 횟수
-(n-1)+(n-2)+(n-3)+...+2+1=n(n-1)/2
루프 내부의 if조건이 True일 때의 자리바꿈 O(1)
n(n-1)/2*O(1)=O(n^2)
특징
- 항상 일정한 시간 복잡도를 나타냄
- 입력에 민감하지 않은(input insensitive) 알고리즘
- 원소 간의 자리바꿈 횟수가 최소인 정렬