如何快速查找一个结构体数组中的特定元素

VNROOY 2013-01-21 12:35:55
如题,首先,我定义了一个结构体,结构体里面有一个名字叫APPID的整型成员。然后我又calloc了这种结构体为元素的结构体数组,数组大小为200.现在,我想快速查找数组中某一个元素的APPID为特定值(比如0x4000)的元素。目前我的方法是从头遍历,但是速度是很慢的,如何才能快速查找?
...全文
938 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xxjnetwork 2013-01-22
引用 5 楼 goodboy1881 的回复:
引用 4 楼 zhou19891113 的回复:楼主,你问的问题不就是一个查找的问题吗? 关于查找有很多快速的方法,如果你的结构一定要用数组, 你有两个选择: 1:构造一个从小到大排序的数组,然后二分查找,这样速度就比顺序查找快多了。 2:如果内存空间够大,你可以使用hash。这样查找速度更快。 如果你的结构不一定要用数组,那么你的选择就更多了,这里就不一一……
那也得看看吧,如果你是取的次数多,存一次,那排序下了二分法的开销还是值得的
  • 打赏
  • 举报
回复
积木 2013-01-22
引用 4 楼 zhou19891113 的回复:
楼主,你问的问题不就是一个查找的问题吗? 关于查找有很多快速的方法,如果你的结构一定要用数组, 你有两个选择: 1:构造一个从小到大排序的数组,然后二分查找,这样速度就比顺序查找快多了。 2:如果内存空间够大,你可以使用hash。这样查找速度更快。 如果你的结构不一定要用数组,那么你的选择就更多了,这里就不一一介绍了。
这样的方法,你要先排序,而如果计算上排序的时间规模,就不一定哪个更好了。 就要case by case的看。
  • 打赏
  • 举报
回复
Ericz 2013-01-22
楼主,你问的问题不就是一个查找的问题吗? 关于查找有很多快速的方法,如果你的结构一定要用数组, 你有两个选择: 1:构造一个从小到大排序的数组,然后二分查找,这样速度就比顺序查找快多了。 2:如果内存空间够大,你可以使用hash。这样查找速度更快。 如果你的结构不一定要用数组,那么你的选择就更多了,这里就不一一介绍了。
  • 打赏
  • 举报
回复
积木 2013-01-21
从头到尾遍历一次的代价几乎肯定要花的,没什么有好的方法。
  • 打赏
  • 举报
回复
VNROOY 2013-01-21
尽量优化算法嘛
  • 打赏
  • 举报
回复
louyong0571 2013-01-21
数组大小才200,不至于很慢吧。
  • 打赏
  • 举报
回复
相关推荐
发帖
Linux/Unix社区
加入

2.1w+

社区成员

Linux/Unix社区 应用程序开发区
申请成为版主
帖子事件
创建了帖子
2013-01-21 12:35
社区公告
暂无公告