2
我有多個範圍配置可以動態增加/減少,我需要找到最快的方式來查找給定的數字是否存在任何範圍,如果是然後返回範圍?有人可以請我建議C中最快的算法或數據結構來做這樣的操作嗎?需要找到一個數字是否已經存在於任何給定的範圍內
代碼段如下所示:
addr = GET_U32BIT(buf);
/* Search for the corresponding address */
while(i < addr_table_size)
{
if((addr >= ntohl(table->addr_id[i].start_addr)) && \
(addr <= ntohl(table->addr_id[i].end_addr)))
{
addr_present = 1;
range_id = i;
break;
}
i++;
}
在上面的代碼,addr是在運行時接收到從緩衝器得到的4字節數,同時做一個表中的線性搜索,其中就結束地址被存儲,性能非常低,因爲表可以有大約50,000到100,000個條目。
謝謝
請至少發佈一些代碼或數據結構的原型。 – linello
這是你程序中的瓶頸嗎?你有分析過嗎?線性搜索是否太慢? –
請在原始帖子中找到代碼片段..thx –