二分法原理:对一个已经排序好的数组进行取中值,把中值与数据比较,如果数据更大,则向左继续进行二分法。否则向右,依次进行下去…直到遍历到原数组的第一个元素,或者最后一个元素停止寻找。可以用循环,或者递归。
查找元素二分法前提是:数组已经是排好序的
循环实现:
static int Select(int[] arr, int value)
{
int index = -1;
int left = 0;
int right = arr.Length - 1;
int mindle = 0;
while (left <= right)
{
mindle = (left + right) / 2;
//向左查找
if (value < arr[mindle])
{
right = mindle - 1;
}
else if (value > arr[mindle])
{
//向右查找
left = mindle + 1;
}
else
{
index = mindle;
break;
}
}
return index;
}