关键字索引搜索

来源:互联网 发布:设备优化改善报告ppt 编辑:程序博客网 时间:2024/05/18 20:32

假定关键字的值是不同的小整数。在这种情况下,最简单的搜索算法是对存储在数组中的数据项进行排序,并按关键字进行索引。下面给出这种思想的伪代码:

NULLitem 表示空项

Item 表示数据项的类型。

 

static Item *st;

static int M = maxKey; //最大项

 

void STinit( int maxN )

{

       Inti;

       st= malloc((M+1)*sizeof(Item));

       for(i=0; i<= M; i++)

              st[i]= NULLitem;

}

 

int Stcount()

{

       Inti,N=0;

      for( i=0; i< M;i++)

              if(st[i]!= NULLitem)

                     N++;

       returnN;

}

void STinsert(Item item)

{

       st[key(item)]= item;

}

Item Stearch(Key v)

{

       returnst[v];

}

void STdelete(Item item)

 

       st[key(item)]= NULLitem;

}

Item STselect(int k)

{

       inti;

       for(i=0;i<M;i++)

              if(s[i]!= NULLitem)

                     if(k--==0)return st[i];

}

 

void STsort(void (*visit)(Item))

{

       inti;

       for(i=0;i<M;i++)

              if(st[i]!=NULLitem)visit(st[i])

}

这段代码假设关键字的值是小于maxKey的正整数。限制它应用的主要因素是当maxKey较大时,对空间的需求,以及当N相对较小时,针对STinit的时间要求。

 

如果没有任何数据项我们可以使用位表。我们可以把第k位看做是表明k是否存在于表的标志。

原创粉丝点击