我在搜索数组中不存在的元素时低估代码的行为时感到困惑。关于c中的二进制搜索算法的问题
- 我正在查找的元素索引的结果始终为零,同时声明它为
int index;
。 - 我正在寻找的元素索引的结果是随机数,同时声明它为
size_t index;
在下面的代码中声明变量索引为int index;
和size_t;
有什么区别。
代码
#include <stdio.h>
#define SIZE 5
int main(void)
{
int numbers[SIZE]={1,2,3,4,5};
int search =0; // This variable define the required number i am searching for
int start = 0 ;
int end = SIZE-1 ;
size_t index;
while (start <= end)
{
int middle = (start+end)/2;
if (search == numbers[middle])
{
index = middle;
}
if (search > numbers[middle])
{
start = middle+1 ;
}
else
{
end= middle-1 ;
}
}
printf("The index of the element is %d",index);
return 0;
}
'%d'不是用于打印'size_t'的正确格式说明符。 – Hurkyl
'index = middle;' - >'index = middle; break;'也'size_t索引;'未初始化。 - >'size_t index = SIZE;'('SIZE'意思是“找不到”) – BLUEPIXY
size_t的右边说明符是什么?@Hurkyl – Elhaw