我有这个方法的问题,当它得到“大”的数组。当我用10个数字输入数组时,它工作正常。但是,如果我插入10千位数甚至20的方法永远不会结束,我找不到问题。寻找与平分,而不是停止
int bisection(int el, int* a, int n)
{
int i = 0;
if (n <= 0)
{
return -1;
}
else
{
do
{
int mid = (i + n)/2;
if(el == a[i])
{
return i;
}
else if(el < a[n])
{
n = mid - 1;
}
else if(el > a[i])
{
i = mid + 1;
}
}while(i <= n);
}
}
我必须找到例如第一个数字,如果我有阵:
indexs: 0 1 2 3 4 5 6 7 8
elements: 1,1,3,3,3,5,6,7,9
,我期待为3号我一定要得到这个作为
result: (index) 2
第一发生。
如果该值不包含数组中会发生什么? – Caduchon
返回-1 – user3127680
如果用'el == a [n]'和'el> al [i]' – Skizz