선택 Sort는 배열에서 가장 작은 숫자를 찾은 다음 첫 번째 위치에 배치하는 방식으로 작동하는 공격 알고리즘입니다. 순회할 다음 배열은 가장 작은 숫자가 배치된 위치 옆의 인덱스에서 시작합니다.
이 개념을 더 명확하게 하기 위해 예를 들어보겠습니다.
이 배열에 {6, 3, 8, 12, 9} 배열이 있습니다. 가장 작은 요소는 3입니다. 따라서 첫 번째 위치에 3을 배치하고 그 후 배열은 {3, 6, 8, 12, 9}. 이제 우리는 가장 작은 수를 다시 찾을 것이지만 이번에는 3이 그 자리에 있기 때문에 검색에서 고려하지 않을 것입니다. 다음으로 가장 작은 요소인 6을 찾아 두 번째 위치에 6이 있는 배열을 만든 다음 배열이 정렬될 때까지 배열에서 다시 검색합니다.
선택 정렬 알고리즘 작업-
다음 단계는 선택 정렬 알고리즘이 따릅니다.
{20, 12, 23, 55,21}
배열을 가정해 보겠습니다.-
배열의 첫 번째 요소를 최소로 설정합니다.
최소 =20
-
최소값을 다음 요소와 비교하고 최소값보다 작으면 이 요소를 최소값으로 지정합니다. 배열이 끝날 때까지 이 작업을 수행합니다.
12와 비교:20> 12, 최소 =12
23과 비교:12 <23 , 최소값 =12
55와 비교:12 <55 , 최소 =12
21과 비교:12 <21 , 최소값 =12
-
배열의 첫 번째 위치(인덱스 0)에 최소값을 배치합니다.
배열 ={12, 20, 23, 55, 21}
-
다음 반복을 위해 정렬되지 않은 첫 번째 요소, 즉 최소값이 배치된 위치 옆에 있는 요소에서 정렬을 시작합니다.
배열 ={12, 20, 23, 55, 21}
최소값이 있는 다음 요소인 20부터 검색이 시작됩니다.
반복 2:
최소 =20
23과 비교:20 <23 , 최소 =20
55와 비교:20 <55 , 최소 =20
21과 비교:20 <21 , 최소 =20
최소 변경 없음,
배열 ={12, 20, 23, 55, 21}
반복 3:
최소 =23.
55와 비교:23 <55 , 최소 =23
21과 비교:23> 21 , 최소 =21
최소값이 인덱스 =2로 이동됨
배열 ={12, 20, 21, 55, 23}
반복 4:
최소 =55
23과 비교:23 <55 , 최소값 =23
인덱스 3Array로 이동된 최소값 ={12, 20, 21, 23, 55}
예시
#include <stdio.h> int main() { int arr[10]={6,12,0,18,11,99,55,45,34,2}; int n=10; int i, j, position, swap; for (i = 0; i < (n - 1); i++) { position = i; for (j = i + 1; j < n; j++) { if (arr[position] > arr[j]) position = j; } if (position != i) { swap = arr[i]; arr[i] = arr[position]; arr[position] = swap; } } for (i = 0; i < n; i++) printf("%d\t", arr[i]); return 0; }
출력
0 2 6 11 12 18 34 45 55 99