首先,我们看到的索引表是10、20、30,假如现在需要查找的目标值是12,通过二分查找索引表 我们可以确定12是在分块2中 然后在分块2中顺序查找,最后得到12存在于数列中。 代码如下: #include <stdio.h> struct index //定义块的结构 { int key; //块的关键字 int start; //块的起始值 int end; //块的...
//15,32,9,22,18 43,66,49,35,53 90,78,71,86//分析:分块查找由索引查找和子表查找两步完成。设n个数据元素的查找表分为m个子表,且每个子表 //均为t个元素,则t=n/m 。这样,分块查找的平均查找长度为: // ASL=ASL索引表+ASL子表=1/2(m+1)=1/2(m+n/m)+1 //可见,平均查找长度不仅和...
if (i >= 3) { //大于分的块数,则返回-1,找不到该数 return -1; } j = indexBlock[i].start; //j等于块范围的起始值 while (j<=indexBlock[i].end && a[j]!=x) { //在确定的块内进行查找 j++; } if (j > indexBlock[i].end) { //如果大于块范围的结束值,则说明没有要查找的...