C语言怎样实现快速查表?

[复制链接]
5887|7
 楼主| mathieu 发表于 2008-7-2 15:43 | 显示全部楼层 |阅读模式
一个数组里,事先存放了256个MAC地址;然后我每次只要得到一个MAC,都会和数组里的256个MAC做比较,看是否在数组里。如果在数组里,就删除掉数组里的该MAC,如果不在数组里,就不做处理。。请问:有什么比较好的算法,可以提高运算速度呢?
mylovetus 发表于 2008-7-2 16:05 | 显示全部楼层

GG,没有学过数据结构???

平常人 发表于 2008-7-2 21:51 | 显示全部楼层

二分法最快

creatorwu 发表于 2008-7-2 21:58 | 显示全部楼层

二分法最快,但是要看是不是按顺序排列啊。

二分法最快,但是要看是不是按顺序排列啊。
不行就逐一比较吧。
平常人 发表于 2008-7-2 22:00 | 显示全部楼层

事先存放了256个MAC地址,当然是按顺序排列

事先存放的MAC地址,当然是按最有方法存放。
armecos 发表于 2008-7-2 22:16 | 显示全部楼层

这种情况下我一般使用CAM硬件,

    从内容得到地址,填入MAC地址,一个时钟周期后就可以得到匹配的MAC数组下标。硬件比较速度是最快的。
    
    或者使用HASH算法什么的软件方法。
    
    或者从成本考虑,你甚至可以逐一比较MAC地址,算法最简单实用,又不是匹配几万个MAC,效果差不太多。
    
    按顺序存放大可不必,每次排序太浪费时间。《ecos增值包》里有很多处理HASH算法的例子,比如:文件系统碎片、MAC地址匹配等。
    
更多内容,详见:
《培训系列“丛书”》
www.armecos.com
-----------------------------------
More details, see:
《"Series Books" of Training》
www.armecos.com
一心 发表于 2008-7-8 11:48 | 显示全部楼层

用数据链表吧

用数据链表吧,删除方便和添加比较方便哦
ayb_ice 发表于 2008-7-9 14:50 | 显示全部楼层

表格要是有规则还是可以的

您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

28

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部