Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 선택 정렬 프로그램?

<시간/>

선택 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