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

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很大时,不宜使用  顺序查找。

猜你喜欢

转载自www.cnblogs.com/LinQingYang/p/11780665.html