首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C语言中管理100个项目的有效方法,开销小

C语言中管理100个项目的有效方法,开销小
EN

Stack Overflow用户
提问于 2011-03-21 18:25:06
回答 5查看 169关注 0票数 2

我在一个只有512 is的系统上,我的应用程序可用(其余的用于缓冲区)。我需要尽可能有效率。

我有大约100个项目是快速添加/删除一个列表。在C中存储这些文件的有效方法是什么?是否有一个库(拥有良好的许可证)将有所帮助?该列表从未超过256项,其平均大小为15项。

  • 我应该使用二叉树吗?
  • 红黑树
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-03-21 18:39:55

如果列表不再是256,最好的选择是保存一个哈希表,并使用散列函数添加/删除每个新元素。这样,每个add/remove只需要占用O(1),所用内存的大小就不需要很大。

票数 2
EN

Stack Overflow用户

发布于 2011-03-21 18:42:16

在平均大小为15的情况下,所有这些解决方案都不必要的过度;这里最好使用一个简单的动态数组。搜索是对数组的线性传递,插入和删除需要移动插入点后面的所有元素。但是,这种移动将被如此少的元素缺乏开销所抵消。

更好的是,因为您无论如何都是在进行线性搜索,所以可以通过将最后一个元素交换到已删除的位置来完成删除操作,因此不需要进一步移动元素--生成O(1)表示插入和删除,O(非常小的n)用于查找。

票数 4
EN

Stack Overflow用户

发布于 2011-03-21 18:39:36

我会用一个双重链接的列表。当处理几十个或数百个项目时,搜索速度并不比数组慢,而且它的优点是只占用它绝对需要的空间。添加和删除元素非常简单,并且只会带来很少的额外开销。

树结构搜索速度更快,但添加或删除元素时开销更大。也就是说,在处理几十个或数百个项目时,差异可能并不显著。如果我是您,我将构建每个实现,并查看哪一个在实际使用中更快。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5381914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档