我是C算法的新手并且请求一些帮助。
我希望检查表中是否存在元素,有人能给我一些好的算法吗?我做的是循环和标志,然后退出循环并验证标志。但它看起来很愚蠢,所以我想会有更高效的算法。我的代码如下:
int j=0;
u8_t next_header[]={0x11, 0x22};
for(i = 0; i < sizeof(next_header); ++i)
{
if (buf[6] != next_header[i])
continue;
else
++j;
}
if(j == 0)
{
// execution
}
else
{
// execution
}
答案 0 :(得分:3)
将它打包在一个函数中,这样你就可以在找到元素后立即跳回循环:
int search_for_elements(int element)
{
int i;
u8_t next_header[]={0x11, 0x22};
for(i = 0; i < sizeof(next_header); ++i)
{
if (element == next_header[i])
return 1; // found the element;
}
return 0; // :( no element found
}
答案 1 :(得分:0)
是的,如果你的表是一个简单的数组循环是要走的路。也就是说,通常的模式是使用break语句而不是continue。
int found = 0;
for(i=0=; i<the_array_length; i++){
if(array[i] == the_element_i_am_searching){
found = 1;
break;
}
}
此外,使用if(i)
而不是if(i != 0)
来测试布尔值更具惯用性。 (也就是说,如果你的变量是一个并不总是0或1的数字,就像你的j
一样,为了清晰起见,我会保持明确的比较)