假定存储块能放10个记录或者99个键和100个指针,再假定B树结点的平均充满度为
70%;即有69个键和70个指针。我们可以用B树作为几种不同结构的一部分。对下面
描述的每种结构,确定:
(1)1 000 000个记录的文件所需的总块数; 
(2)检索一
个给定键值的记录所需的平均磁盘I/O数。可以假定最初在主内存中不存在任何东
西,并且查找键是记录的主键。a)数据文件是按查找键排序的顺序文件,每块存放10个记录。B树为稠密索引。
b)同a一样,但组成数据文件的记录没有特定顺序;每块存放10个记录。
c)同a 一样,但B树为稀疏索引。
d)B树的叶节点中中不放指向数据记录的指针,而是保存记录本身。每块可存放10个记录,但平均每个叶节点的充满度为70%,即每个叶节点存入7个记录。 请给出详细步骤,谢了急!!!!!!!

解决方案 »

  1.   

    为什么不用MFC中的CMap的现成类,而要自己写呢???
      

  2.   

    (1)1000000/10 +1000000/70第一项是记录所占的块数,第二项是索引和指针对应的所占的块数,向上取整
         但是很奇怪,你这个键值和索引怎么不一一对应啊
    (2)好久没有看数据结构了,稠密索引和稀疏索引不记得了,你找本数据结构的书,上面都有对检索效率进行分析的,基本上就是套公式
         只不过你这需要转一下,你这个访问数需要有多次i/o操作(根据公式算),还有访问记录需要加1次i/o操作。
    =============================================================
    个人感觉你这个问题
         问的很不好,因为树的检索效率分很多种情况:最好效率,最差效率,平均效率,你问的检索效率是哪一种
         还有你没有说明索引,指针,记录到底是什么关系
         我只是猜的每个记录有一个索引,每个索引对应一个指针指向这个记录
          还有你没有解释说明为什么指针和索引不是一一对应的
    ============================================================
    另外建议你好好看看数据结构的书,因为查书就可以获得公式,这个还不怎么涉及到程序,单单套公式计算就可以了
      

  3.   

    哦看你这题的意思,树是需要你自己建立的,那么访问i/o的次数又不一样了
    那么还需要加上1000000/70次建立树的i/o访问量
    ================================================
    描述不清很难回答
    ==============================================
    坐等楼下