class Program
{
/// <summary>
/// 二分法查找
/// </summary>
/// <param name="s">要查找的数</param>
/// <param name="arr">有序的数组</param>
/// <returns>查找数的索引</returns>
static int Search(int s,int[] arr)
{
int a = 0;
int b = arr.Length - 1;
while (a <= b)
{
int c = (a + b )/2;
if (arr[c] == s)
{
return c;
}
else if (arr[c] > s)
b = c - 1;
else
a = c + 1;
}
return -1;
}
static void Main(string[] args)
{
Console.WriteLine("数组为:");
int[] arr1 = new int []{1,3,4,5,6,9,13,15,18,29,34,39,40,45,48,57,59,64};
foreach (int i in arr1)
Console.Write(i + " ");
Console.WriteLine("
您要查找的数:");
int s = Convert.ToInt32(Console.ReadLine());
int m = Search(s,arr1);
if (m >= 0)
{
Console.WriteLine("您要查找的数为第" + (m + 1) + "位!");
}
else
Console.WriteLine("您要查找的数字不存在!");
Console.ReadLine();
}
}