顺序查找(基本思想、改进算法)

顺序查找的基本思想
顺序查找是一种最简单的线性查找方法。其基本思想是:从表的一端开始,顺序扫描线性表,依次将扫描到的关键字和给定值k相比较,若当前扫描到的关键字与k相等,则查找成功;若扫描结束后,仍未找到关键字等于k的记录,则查找失败。
最基本的顺序查找的算法

int SeqSearch(int str[],int n,int k)//k为待在str[]中查找的关键字
{ 
int i=0;
while (i<n && str[i]!=k)     //从表头往后找
i++;
if(i>=n)                 //未找到返回0
return -1;
else return i+1;                   //找到返回逻辑序号i+1
}

为了提高查找速度,可以对上述算法进行改进,改进的顺序查找的基本思想:设置“哨兵”。哨兵就是待查值,将它放在查找方向的尽头处,免去了在查找过程中每一次比较后都要判断查找位置是否越界,从而提高了查找速度。例如如果查找方向是从左到右,则将待查值放在R[n]位置;如果查找方向是从右到左,则将待查值放在R[0]位置。当然前提是最后一个或第一个元素的位置不存放关键字。下面查找方向默认为从左到右。其算法如下:

int SeqSearch(int str[],int n,int k)
{/*在顺序表str[0…n-1]中查找关键字为k的记录 */
int i=0;
str[n]=k;
while(str[i]!=k) i++;
if (i<n) return i+1;
else return -1;
}

算法分析
查找算法的基本工作是关键字的比较,因此顺序查找算法的1时间复杂度为O(n)。顺序查找的算法简单、对存储结构没有要求,且对关键字的次序也无要求,但效率较低。

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值