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

C#의 선택 정렬 프로그램


선택 정렬은 루프의 각 반복에 대해 배열에서 최소값을 찾는 정렬 알고리즘입니다. 그런 다음 이 최소값은 현재 배열 요소와 교환됩니다. 배열이 정렬될 때까지 이 절차를 따릅니다.

C#에서 선택 정렬을 보여주는 프로그램은 다음과 같습니다.

using System;
public class Example {
   static void Main(string[] args) {
      int[] arr = new int[10] { 56, 1, 99, 67, 89, 23, 44, 12, 78, 34 };
      int n = 10;
      Console.WriteLine("Selection sort");
      Console.Write("Initial array is: ");
      for (int i = 0; i < n; i++) {
         Console.Write(arr[i] + " ");
      }
      int temp, smallest;
      for (int i = 0; i < n - 1; i++) {
         smallest = i;
         for (int j = i + 1; j < n; j++) {
            if (arr[j] < arr[smallest]) {
               smallest = j;
            }
         }
         temp = arr[smallest];
         arr[smallest] = arr[i];
         arr[i] = temp;
      }
      Console.WriteLine();
      Console.Write("Sorted array is: ");
      for (int i = 0; i < n; i++) {
         Console.Write(arr[i] + " ");
      }
   }
}

출력

위 프로그램의 출력은 다음과 같습니다.

Selection sort
Initial array is: 56 1 99 67 89 23 44 12 78 34
Sorted array is: 1 12 23 34 44 56 67 78 89 99

이제 위의 프로그램을 이해해보자.

먼저 배열이 초기화되고 해당 값이 for 루프를 사용하여 인쇄됩니다. 이는 다음 코드 스니펫에서 확인할 수 있습니다.

int[] arr = new int[10] { 56, 1, 99, 67, 89, 23, 44, 12, 78, 34 };
int n = 10;
Console.WriteLine("Selection sort");
Console.Write("Initial array is: ");
for (int i = 0; i < n; i++) {
   Console.Write(arr[i] + " ");
}

중첩된 for 루프는 실제 정렬 프로세스에 사용됩니다. 외부 for 루프의 각 패스에서 배열의 가장 작은 요소가 발견되고 현재 요소로 대체됩니다. 이 프로세스는 배열이 정렬될 때까지 계속됩니다. 이는 다음 코드 스니펫에서 확인할 수 있습니다.

for (int i = 0; i < n - 1; i++) {
   smallest = i;
   for (int j = i + 1; j < n; j++) {
      if (arr[j] < arr[smallest]) {
         smallest = j;
      }
   }
   temp = arr[smallest];
   arr[smallest] = arr[i];
   arr[i] = temp;
}

마지막으로 정렬된 배열이 표시됩니다. 이는 다음 코드 스니펫에서 확인할 수 있습니다.

Console.Write("Sorted array is: ");
for (int i = 0; i < n; i++) {
   Console.Write(arr[i] + " ");
}