二分查找又称折半查找,它是一种效率较高的查找方法。
二分查找要求:线性表是有序表,即表中结点按关键字有序,并且要用向量作为表的存储结构。不妨设有序表是递增有序的。
public class Program
{
public static int Binsch(int[] a, int key)
{
int low = 0;
int high = a.Length-1;
while (low <= high)
{
int mid = (low + high) / 2;
if (key == a[mid])
{
return mid; //返回找到的索引值
}
else
{
if (key < a[mid])
high = mid - 1;
else
low = mid + 1;
}
}
return -1; //查找失败
}
public static void Main(string[] args)
{
int n = 100;//数组长度
int[] arr = new int[n];
for (int i = 1; i <= n; i++)
{
arr[i - 1] = i;//初始化数组
Console.Write(i.ToString() + ",");//输出数组
}
Stopwatch sw = Stopwatch.StartNew();
int result = Binsch(arr, 17);//查找17
sw.Stop();
Console.WriteLine(sw.Elapsed);//显示运行时间
Console.WriteLine(result);//查询结果
}
}