Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 배열에서 K번째로 작은 요소를 찾는 방법

C# 배열에서 K번째로 작은 요소 찾기

C# 프로그래밍에서 배열 안에서 K번째로 작은 요소를 찾아야 하는 경우가 종종 있습니다. 이 글에서는 Array.Sort() 메서드를 활용해 이 문제를 간단하고 효율적으로 해결하는 방법을 단계별로 살펴보겠습니다.

1단계: 배열 선언하기

먼저 정수형 1차원 배열을 선언합니다.

int[] a = new int[] {
    65,
    45,
    32,
    97,
    23,
    75,
    59
};

2단계: 배열 정렬하기

K번째로 작은 값을 구하려면 먼저 배열을 오름차순으로 정렬해야 합니다. C#에서는 Array.Sort() 메서드 한 줄로 간단히 처리할 수 있습니다.

Array.Sort(a);

정렬이 완료되면 배열의 요소들은 다음과 같이 작은 값부터 차례대로 배치됩니다.

23, 32, 45, 59, 65, 75, 97

3단계: K번째로 작은 요소에 접근하기

배열의 인덱스는 0부터 시작하므로, K번째로 작은 요소는 인덱스 k - 1에 위치합니다. 예를 들어 5번째로 작은 값을 구하려면 다음과 같이 접근합니다.

a[k - 1];

전체 코드 예제

지금까지의 과정을 하나의 완성된 프로그램으로 정리하면 다음과 같습니다.

using System;
using System.IO;
using System.CodeDom.Compiler;

namespace Program {
   class Demo {
      static void Main(string[] args) {

         int[] a = new int[] {
            65,
            45,
            32,
            97,
            23,
            75,
            59
         };

         // k번째로 작은 요소
         int k = 5;

         Array.Sort(a);

         Console.WriteLine("정렬된 배열...");
         for (int i = 0; i < a.Length; i++) {
            Console.WriteLine(a[i]);
         }

         Console.Write(k + "번째로 작은 요소 = ");
         Console.WriteLine(a[k - 1]);
      }
   }
}

실행 결과

정렬된 배열...
23
32
45
59
65
75
97
5번째로 작은 요소 = 65

마무리

이처럼 Array.Sort()로 배열을 정렬한 뒤 인덱스 k - 1에 접근하는 방식만으로도 K번째로 작은 요소를 손쉽게 구할 수 있습니다. 이 방법의 시간 복잡도는 O(n log n)으로, 데이터 크기가 크지 않은 대부분의 실무 상황에서 충분히 실용적입니다. 만약 매우 큰 데이터셋에서 자주 조회해야 한다면 우선순위 큐(힙)나 선택 알고리즘(Quickselect)을 활용하는 것도 좋은 대안입니다.