| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 463 人关注过本帖
标题:求助:C#中的二级索引查找如何实现?
取消只看楼主 加入收藏
peggy1986
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-5-15
结帖率:0
收藏
已结贴  问题点数:20 回复次数:0 
求助:C#中的二级索引查找如何实现?
程序需要实现的功能如下:
将测试数据存储到字典中,字典为二级索引,如何实现索引查找?

图 8.2 一个主表和一个索引表的结构图
0       1      2      3
14     34     66     85
0       5      10     14
索引表

8  14  6   9   10  22  34  18  19   31   40  38  54  66  71  78  68  80  85
0  1   2   3   4   5   6   7   8    9    10  11  12  13  14  15  16  17  18
主表

      索引查找分两步进行。先确定待查找记录所在的子表,然后在子表中进行顺
序查找。比如,在图 8.2 中,现在要查找关键码为54 的记录。先将 54 依次与索
引表中每个记录的 data 域的值进行比较,由于 34<54<66,则若在主表中存在关
键码为 54 的记录,则该记录必定在主表的第 3 个子表中。由于相应的 link 域的
值为 10,所以,从主表的第11 个记录(数组的下标为10)开始进行顺序查找。
当比较到主表的第 13 个记录(数组的下标为12)时,关键码相等,说明主表中
有要查找的记录,则查找成功。当然,如果比较到第 15 个记录(因为索引表的
下一个记录的 link 域的值为 14)仍然不等,说明主表中不存在要查找的记录,
查找失败。
    性能分析:索引查找由索引表查找和子表查找两步完成。设 n个记录的顺序
表分为 m个子表,且每个子表均有t 个记录,则 t=n/m。这样,索引查找的平均
查找长度为: ASL=ASL索引表+ASL子表=(m+1)/2+(n/m+1)/2=(m+n/m)/2+1

    当主表中的记录个数非常多时,索引表本身可能也很大,此时可按照
的方法对索引表再建立索引表,这样的索引表称为二级索引表。同样的方法
还可建立三级索引表。二级以上的索引结构称为多级索引结构。
搜索更多相关主题的帖子: 结构图 如何 
2013-05-15 22:42
快速回复:求助:C#中的二级索引查找如何实现?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019827 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved