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

C# Array.BinarySearch(Array, Int32, Int32, Object) 메서드 완벽 가이드 – 예제로 배우기

C#의 Array.BinarySearch() 메서드는 1차원 정렬된 배열에서 지정된 범위에 속한 요소들을 대상으로 특정 값을 검색합니다. 비교 작업은 배열의 각 요소와 검색하려는 값이 구현한 IComparable 인터페이스를 기반으로 수행됩니다.

참고: 이진 탐색은 배열이 오름차순으로 정렬되어 있어야만 올바른 결과를 보장합니다.

구문

메서드의 구문은 다음과 같습니다.

public static int BinarySearch(Array arr, int index, int len, object val);

매개변수 설명

  • arr: 검색 대상인 1차원 배열
  • index: 검색을 시작할 범위의 시작 인덱스
  • len: 검색할 범위의 길이(요소 개수)
  • val: 찾으려는 값(객체)

반환값

  • 값을 찾은 경우: 해당 요소의 인덱스
  • 값을 찾지 못한 경우: 음수 (검색 범위 안에 값이 존재하지 않음을 의미)

예제 1 – 범위 내에서 값 찾기

다음 예제에서는 인덱스 1부터 길이 3만큼의 범위에서 값 20을 검색합니다.

using System;

public class Demo {
   public static void Main() {
      int[] intArr = {10, 20, 30, 40, 50};
      Array.Sort(intArr);

      Console.WriteLine("배열 요소...");
      foreach(int i in intArr) {
         Console.WriteLine(i);
      }

      Console.Write("요소 20의 인덱스 = " + Array.BinarySearch(intArr, 1, 3, 20));
   }
}

출력 결과

배열 요소...
10
20
30
40
50
요소 20의 인덱스 = 1

검색 범위(인덱스 1~3)에 값 20이 포함되어 있으므로, 결과적으로 인덱스 1이 반환됩니다.

예제 2 – 범위 밖의 값 검색 시 음수 반환

이번에는 검색 범위를 인덱스 0부터 길이 2까지로 제한하고 값 25를 검색해 보겠습니다.

using System;

public class Demo {
   public static void Main() {
      int[] intArr = {5, 10, 15, 20};
      Array.Sort(intArr);

      Console.WriteLine("배열 요소...");
      foreach(int i in intArr) {
         Console.WriteLine(i);
      }

      Console.Write("요소 25의 인덱스 = " + Array.BinarySearch(intArr, 0, 2, 20));
   }
}

출력 결과

배열 요소...
5
10
15
20
요소 25의 인덱스 = -3

검색 범위(인덱스 0~1)에는 값이 존재하지 않으므로 음수인 -3이 반환됩니다. 이처럼 반환값이 음수라면 지정한 범위 안에서 해당 값을 찾지 못했다는 의미로 해석하면 됩니다.