折半查找是一种在有序数列中快速查找数据的一种方法。
实现基本原理:每次查找前提前确定待查数组的下标范围,然后用m(待查数据)与中间元素比较,如果m大于中间元素则向中间元素与的中间数据上面查;反之则向下面查找。
折半原理图:
static void Main(string[] args)
{
int[] a = { 1, 2, 3, 4, 6, 8, 9, 12, 14, 23, 34, 65, 78, 88, 90 };
int i, flag, low, high, mid, m;
Console.Write("请输入要查找的数字m:");
m = Convert.ToInt16(Console.ReadLine());
low = 0;
high = 14;
flag = 0;
mid = -1;
while (low <= high)
{
mid = (low + high) / 2;
if (m == a[mid])
{
flag = 1;
break;
}
else if (m > a[mid])
{
low = mid + 1;
}
else
{
high = mid - 1;
}
}
Console.WriteLine("数组为: ");
for (i = 0; i < a.Length - 1; i++)
{
Console.Write("{0} ", a[i]);
}
Console.WriteLine();
if (flag == 1)
Console.WriteLine("{0}的位置是{1}",m,mid);
else
Console.WriteLine("未找到!");
Console.ReadKey();
}
}