顺序表的查找

来源:互联网 发布:手机淘宝一元起拍在哪 编辑:程序博客网 时间:2024/05/16 17:24

在顺序表的顺序存储结构中,介绍了顺序表的查找操作,即顺序查找,依次遍历和比较。

顺序表的结构:

#define MAXSIZE 100typedef struct node{    int data[MAXSIZE];    int length;}List;

下面介绍其他两种性能更好好的查找算法:

1. 设置“前哨站”

在线性表的顺序存储结构中,可以在线性表的位置0设置一个前哨战(如果以位置1为存储开始位的话)或者线性表最后增加一个前哨战,这样就能在循环阶段减少一个判断条件,这种方法可以有效地提高查找的效率。

int search_list(List l,int x){    int n,i=0;    n=l.length ;    l.data [n]=x ;      //增加一个空间,设置前哨战    while(l.data [i]!=x)        //减少一个判断条件        i++;    if(i==n) return (-1);//未找到    else return i;}

2. 有序表的查找:折半法

当线性表是有序时,可以采用折半法进行查找。

int Binsearch(List l,int x){    int low,mid,high;    low=0;high=l.length -1;    while(low<high)    {        mid=(low+high)/2;       //取区间中点        if(l.data [mid]==x)             return mid;        else if(l.data [mid]<x)            low=mid+1;      //在右区间查找        else            high=mid-1;     //在左区间查找    }    return -1;}

1 0
原创粉丝点击