mathieu 发表于 2008-7-2 15:43

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

一个数组里,事先存放了256个MAC地址;然后我每次只要得到一个MAC,都会和数组里的256个MAC做比较,看是否在数组里。如果在数组里,就删除掉数组里的该MAC,如果不在数组里,就不做处理。。请问:有什么比较好的算法,可以提高运算速度呢?

mylovetus 发表于 2008-7-2 16:05

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

平常人 发表于 2008-7-2 21:51

二分法最快

creatorwu 发表于 2008-7-2 21:58

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

二分法最快,但是要看是不是按顺序排列啊。<br />不行就逐一比较吧。

平常人 发表于 2008-7-2 22:00

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

事先存放的MAC地址,当然是按最有方法存放。

armecos 发表于 2008-7-2 22:16

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

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

一心 发表于 2008-7-8 11:48

用数据链表吧

用数据链表吧,删除方便和添加比较方便哦

ayb_ice 发表于 2008-7-9 14:50

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

页: [1]
查看完整版本: C语言怎样实现快速查表?