二分法查找:适用于已经排序好的数组
1.二分法查找(入门案例)
static void Main(string[] args)
{
int[] myNums = { , , , , , , , , , , , , , , , , , , ,, }; Console.WriteLine("我的数组是:");
for (int i = ; i < myNums.Length; i++)
{
Console.Write("{0} ",myNums[i]);
}
Console.WriteLine(); //使用二分法从数组查找指定值
//取得查找值在数组中的索引位置
int QueryValueIndex = QueryFromTwoParts(, myNums, , myNums.Length - );
Console.WriteLine("--------------------------------------------------------");
Console.WriteLine("查找值688在数组中的索引位置是:{0}",QueryValueIndex);
Console.WriteLine("数组myNums索引位置{0}处的值是:{1}",QueryValueIndex,myNums[QueryValueIndex]); Console.ReadKey();
} //该方法返回的是查找值在数组中的索引位置
private static int QueryFromTwoParts(int QueryValue, int[] nums, int leftIndex, int rightIndex)
{
//计算数组中间值的在数组中的索引位置
int midValueIndex = (leftIndex + rightIndex + ) / ; //取得数组中间索引位置处的值
int midValue = nums[midValueIndex]; //比较中间值与查找值的大小,确定下一步该怎样继续查询
if (QueryValue ==midValue)
{
return midValueIndex;
}
else if (QueryValue<midValue)
{
return QueryFromTwoParts(QueryValue, nums, leftIndex, midValueIndex);
}
else
{
return QueryFromTwoParts(QueryValue, nums, midValueIndex, rightIndex);
} }
2.代码运行结果: