선택 정렬은 배열에서 가장 작은 숫자를 찾아 첫 번째 위치에 배치하는 방식으로 작동하는 공격적인 알고리즘입니다. 탐색할 다음 배열은 가장 작은 숫자가 있는 다음 인덱스에서 시작됩니다.
이 개념을 더 명확하게 설명하기 위해 예를 들어 보겠습니다.
{6, 3, 8, 12, 9} 배열이 있고 이 배열의 가장 작은 요소는 3입니다. 따라서 우리는 첫 번째 위치에 3을 배치하고 그 이후 배열은 {3, 6, 8, 12, 9} 처럼 보일 것입니다. 이제 우리는 가장 작은 숫자를 다시 찾을 것입니다. 그러나 이번에는 3이 그 자리에 있기 때문에 검색에서 고려하지 않을 것입니다. 다음으로 가장 작은 요소인 6을 찾고 두 번째 위치에 6이 포함된 배열을 만든 다음 배열이 정렬될 때까지 배열에서 다시 검색합니다.
선택 정렬 알고리즘 작동 방식 -
선택 정렬 알고리즘은 다음 단계를 따릅니다.
배열 {20, 12, 23, 55,21}
배열의 첫 번째 요소를 최소값으로 설정합니다. .
Min value = 20
최소값을 다음 요소와 비교하여 최소값보다 작으면 해당 요소를 최소값으로 지정합니다. 배열이 끝날 때까지 이 작업을 수행합니다.
는 12:20 > 12와 비교되고, 최소값 = 12
는 23:12 은 55:12
21: 12
과 비교하면 최소값을 배열의 첫 번째 위치(인덱스 0)에 넣습니다.
Array = {12, 20,23, 55, 21}
다음 반복에서는 정렬되지 않은 첫 번째 요소부터 정렬을 시작합니다.
Array = {12, 20,23, 55, 21}
20부터 검색을 시작하여 다음으로 최소값을 갖는 요소를 배치합니다.
반복 2:
최소값 = 20
23 대비: 20
55 대비: 20
21 대비: 20
최소값은 변경되지 않고 유지됩니다.
array = {12, 20,23, 55, 21}
반복 3:
최소값 = 23.
55 대비: 23
21 대비: 23 > 21, 최소값 = 21
인덱스로 이동한 최소값 = 2
Array = {12, 20, 21, 55, 23}
반복 4:
최소 = 55
23과 비교: 23
최소 인덱스 3으로 이동 배열 = { 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
위 내용은 선택 정렬을 위한 C 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!