static
void Main(string[] args) {
int[] myNums = {1,13,22,34,56,143,167,211,266,363,466,572,595,645,688,689,702,779,888,899,922};
Console.WriteLine(
"我的数组是:"
);
for
(int i = 0; i < myNums.Length; i++) {
Console.Write(
"{0} "
, myNums[i]);
}
Console.WriteLine();
int QueryValueIndex = QueryFromTwoParts(688, myNums, 0, myNums.Length - 1);
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 + 1) / 2;
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);
}
}