1、顺序查找——查找算法

瘦欲@ 提交于 2019-12-03 06:30:34

2019/11/02

 

1、顺序查找(从前往后||从后往前查)

数据元素定义:

typedef struct{

    Keytype key;  //关键字域

    InfoType otherinfo;//其他域

}Elemtype;

顺序表定义:
typedef struct{

    Element *R; //存储空间基地址

    int length; //当前长度

}SSTable;

算法1顺序查找:[时间复杂度:O(n)]

int Search_Seq(SSTable ST,KeyType key){

    for(i=ST.length;i>=1;--i)

     if(ST.R[i].key==key) return i; //从后往前找

    return 0;

}

算法2设置监视哨的顺序查找:[时间复杂度:O(n)]

int Search_Seq(SSTable ST,Keytype key){

    ST.R[0].key=key;     //"哨兵",也可以放在高下标处

    for(i=ST.length; ST.R[i]!=key; --i);  //从后往前找

    return i;

}

 

"哨兵"的使用,能使顺序查找在ST.length≥1000时,进行一次查找所需的平均时间几乎减少一半。

顺序查找优点

算法简单,对表结构无要求,既适用于顺序结构,又适用于链式结构,无论记录是否按关键字有序 均可使用。

顺序查找缺点:

平均查找长度较大,查找效率较低,当n很大时,不宜使用  顺序查找。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!