完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
几个比较基础的查找算法: 1. 无序链表的查找: 主要是使用链表的遍历操作来实现对于每个元素的访问,和对比。通过在for循环中的if来判断key相等的元素。如果找到就弹出val。如果没有就返回null。 主要查找算法是: for(node *temp = first; temp != null; temp = temp->next) If(key == temp->key) return temp->val; 插入算法: first = new node(key,val,first); 在查找算法后面判断查找元素是否存在,然后多加一句新建节点。 2. 无序数组的查找: 主要也是通过循环遍历对比: int Serch(int key,int low,int high) { for(int i = low; i < high; i++) { if( key == a ) return i; } return 0; } 3. 有序数组表的查找: 一般使用二分法查找。通过判断查找元素与中间元素(mid)的大小来决定下一次的查找在低分区还是高分区。 查找代码: intbinarySerch(int key,int low,int high) { if(low > high) return 0; int mid; while(low <= high) { mid =(low + high)/2; if(key < keys[mid]) high = mid - 1; elseif(key > keys[mid]) low = mid + 1; else return mid; } return0; } 4. 索引表查找技术: 通过一个结构体来存储某个块中最小值,以及指向此块的指针。然后将这个类型的结构体根据存储的块的最小值的大小来构造有顺序的结构体数组。此数组可以按照:块间有序,块内无序的特点来使用:第一次通过二分查找来从结构体数组中获取符合key的块号,根据块号读取指针找到对应的块。再通过无序链表的遍历技术来查询块中的元素。 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
12133 浏览 2 评论
4468 浏览 3 评论
3702 浏览 5 评论
9530 浏览 47 评论
4505 浏览 9 评论
706浏览 0评论
507浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 10:58 , Processed in 0.384158 second(s), Total 45, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号