如何在C#中使用泛型实现二分查找

avatar
作者
猴君
阅读量:0

下面是一个使用泛型实现二分查找的例子:

using System;  class BinarySearch<T> where T : IComparable {     public static int Search(T[] array, T value)     {         int min = 0;         int max = array.Length - 1;          while (min <= max)         {             int mid = (min + max) / 2;              if (array[mid].CompareTo(value) == 0)             {                 return mid;             }             else if (array[mid].CompareTo(value) < 0)             {                 min = mid + 1;             }             else             {                 max = mid - 1;             }         }          return -1;     } }  class Program {     static void Main()     {         int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };         int value = 5;          int index = BinarySearch<int>.Search(array, value);          if (index != -1)         {             Console.WriteLine($"Value {value} found at index {index}");         }         else         {             Console.WriteLine($"Value {value} not found in array");         }     } } 

在这个例子中,我们使用泛型 T 来表示数组和要查找的值的类型。我们要求 T 必须实现 IComparable 接口,以便能够使用 CompareTo 方法来比较两个对象。然后我们定义了一个 BinarySearch 类,其中包含一个静态方法 Search,该方法接受一个数组和要查找的值,并返回该值在数组中的索引(如果存在)或 -1(如果不存在)。在 Main 方法中,我们创建了一个整数数组,并使用 BinarySearch 类来查找值 5 在数组中的位置。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!