我在搜索數組中不存在的元素時低估代碼的行爲時感到困惑。關於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