gpt4 book ai didi

c - 遍历数组,什么更好,更快等等?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:30:02 26 4
gpt4 key购买 nike

我想实现一个散列或类似 PHP 的数组。通过键查找元素,选项 a) 或选项 b) 哪个更好?

(所有变量都被设置和初始化等等!)

一)

for( i = 0; i < ary->element_cnt && found == NULL; i++ ) {
current_element = &(ary->elements[i]);
if( 0 == memcmp(current_element->key, search_key, keysize) ) {
found = current_element;
}
}

二)

for( i = 0, current_element = &(ary->elements[i]) ; 
i < ary->element_cnt &&
0 != memcmp(current_element->key, searchkey, keysize);
i++, current_element = &(ary->elements[i]) );
/*found = current_element;*/

第一个更好是因为它更具可读性/可维护性吗?第二个会更快吗?

在一个大循环中做所有事情是“糟糕的风格”吗?

我知道,有更好的搜索算法,但这不是我的问题!

最佳答案

这两个都是 O(N) 算法 - 它们都简单地遍历数组并为每个元素调用 memcmp - 因此它们的执行应该相似。主观上,我认为第一个更好,因为它更容易阅读。

然而,实现按键查找的最佳方法不是使用这样的线性搜索,而是使用哈希表或平衡二叉树等专门的数据结构。像 PHP 这样的脚本语言通常使用哈希表来实现这样的查找。

关于c - 遍历数组,什么更好,更快等等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13823926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com