基于跳表指针(skip points)的倒排记录表(postings lists)合并算法

来源:互联网 发布:dota 数据 编辑:程序博客网 时间:2024/06/02 16:26

跳表算法为:




public class skip {

public static void main(String args[])
{//////////初始化两个数组a,b,相当于两个倒排表
int a[]={2,4,8,16,19,23,28,43};
int b[]={1,2,3,5,8,41,51,60,71};
int c[]=new int [20];//数组用于存放相同的位置
int alen=a.length;
int blen=b.length;
int i=0,j=0,k=0,sk=4;//一次性跳四个
while(i<alen && j<blen)//当取两个数组内的数字时
{
if(a[i]==b[j])//如果位置相等
{
c[k]=a[i];//存放到c数组中
k++;//计数器
i++;j++;//下标后移
}
else if(a[i]<b[j])//如果a位置小于b位置
{
if((i+sk)<alen && a[i+sk]<=b[j])//如果跳了sk个a位置仍然小于b位置
i=i+sk;//a跳sk个数字
else
i++;

}
else//如果a位置大于b位置
{
if((j+sk)<blen && a[i]>=b[j+sk])//如果跳了sk个b位置仍然小于a位置
j=j+sk;//b跳sk个数字
else
j++;
}
}
for(i=0;i<k;i++)
System.out.print(c[i]+" ");
}

}


运行结果:


0 0
原创粉丝点击