선택 정렬
오늘은 Selection Sort Algorithm에 대해 알아보겠습니다.
선택 정렬은 초보자도 쉽게 이해할 수 있는 간단한 정렬 알고리즘입니다. 선택 정렬에서 배열은 다음과 같이 두 부분으로 나뉩니다.
첫째, 전체 목록이 정렬되지 않은 부분을 차지하는 동안 정렬된 부분은 비어 있습니다. 정렬되지 않은 부분의 최소 요소를 찾아 정렬되지 않은 부분의 가장 왼쪽 요소와 교체합니다. 그런 다음 해당 요소는 정렬된 배열의 일부가 됩니다. 시간이 지남에 따라 분류된 부분은 확장되고 분류되지 않은 부분은 축소됩니다. 마지막으로 정렬되지 않은 부분이 비게 되면 정렬된 배열을 얻게 됩니다.
선택 정렬 알고리즘에서 배열이 정렬되는 방식은 아래 이미지에 나와 있습니다.
선택 정렬을 위한 의사 코드
1. for i=1 to i=n-1
2. min=i
3. for j=i+1 to j=n
4. if A[j]<A[min], then
5. min=j
6. end for
7. if min≠i then , interchange A[i] and A[min]
8. end for
C에서 선택 정렬 구현
//arr is the name of the array to be sorted
// n is the size of the array
void SelectionSort(int arr[], int n)
{
int i, j, min;
for (i = 0; i < n-1; i++)
{
// Find the minimum element in the unsorted part of the array
min = i;
for (j = i+1; j < n; j++)
if (arr[j] < arr[min])
min = j;
// Swap the found minimum element with the first element of the unsorted array
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
선택 정렬의 복잡성
첫 번째 패스에서 가장 작은 값을 가진 요소를 찾으려면 모든 n개 요소를 스캔해야 합니다. 따라서 n-1 비교는 첫 번째 패스에서 필요합니다. 그런 다음 가장 작은 값이
첫 번째 위치의 요소. 패스 2에서 두 번째로 작은 값을 찾으려면 나머지 n – 1개 요소 등을 스캔해야 합니다. 그러므로,
(n – 1) + (n – 2) + ... + 2 + 1
= n(n – 1) / 2 = O(n2)
따라서 선택 정렬의 시간 복잡도는 주어진 배열에 있는 요소의 원래 순서와 관계없이 동일함을 알 수 있습니다.
공간복잡도는 임시변수 temp를 사용하므로 0(1)이다.
선택 정렬의 장점
요약하면 선택 정렬은 이해하기 쉬운 간단한 정렬 알고리즘이며 선택 정렬 알고리즘에 대한 지식은 다른 정렬 알고리즘을 배우는 데 강력한 입문을 하는 데 도움이 될 것입니다.
Reference
이 문제에 관하여(선택 정렬), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ucscmozilla/selection-sort-3hf7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)