110,570
社区成员
发帖
与我相关
我的任务
分享
public static void BinSearch(int[] src,int num,int low,int high)
{
//如果没找到相等的,这个时候low>high.这个时候num要插入到low的位置,有3种情况
//1:low在数组最后一个值的下一个位置;2:low在数组的第一个位置;3:在数组中
//所以insert(pos)在第一种情况是要扩大数组,在2,3情况下,要扩大数组并移动low位置后的元素,所以改用链表会方便点
if(low>high)
{
insert(low);
return;
}
int mid;
mid = (low+high)/2;
//如果找到相同值,就插入到当前位置
if(Convert.ToInt32(src[mid]) == num)
{
insert(mid);
return;
}
//如果查找的比实际的小,low =mid +1,继续递归
if(Convert.ToInt32(src[mid]) < num)
{
BinSearch(src,num,mid+1,high);
}
//如果查找的比实际的大,high =mid -1,继续递归
if(Convert.ToInt32(src[mid]) > num)
{
BinSearch(src,num,low,mid-1);
}
}