作者larrywhy (【老头】~我都100岁了)
看板C_and_CPP
标题[问题] 请问二元搜寻法的问题
时间Sat Oct 10 22:31:44 2009
请问二元搜寻法如何找重复数字呢?
例如: 1 3 3 5 5 7 9
-------------------------------
二元搜寻法只能搜寻一个数字吗?
以及出现位置 都会不一定的吗?
[补充]使用编译器:Dev C++
编写语言: C
※ 编辑: larrywhy 来自: 114.46.116.90 (10/10 22:34)
1F:→ cooper6334:搜到数字後再往左右搜 10/10 22:37
int data::BinarySearch(int Input,int num)
{
int i,j;
int middle;
int left = 0;
int right = num-1;
while(left <= right)
{
middle = (left + right) / 2;
switch(compare(Arr[middle],Input))
{
case -1 : //if Arr [middle] < Input
left = middle + 1 ;
break;
case 0 : //if Arr [middle] == Input
return middle;
case 1 : //if Arr [middle] > Input
right = middle -1 ;
}
}
return -1;
}
------------------------------------------
以上是我的程式码!!
请问如何修改才能往左右搜寻呢
因为他一找到就直接回传了~
※ 编辑: larrywhy 来自: 114.46.116.90 (10/10 22:45)
2F:推 snowlike:对回传的middle做++、-- 10/10 23:00