顺序查找

1.顺序查找优缺点

优点:
算法简单而且使用面广。
对表中记录的存储结构没有任何要求,顺序存储和链式存储均可;
对表中记录的有序性也没有要求,无论记录是否按关键码有序均可。
缺点:
平均查找长度较大,特别是当待查找集合中元素较多时,查找效率较低。

2.顺序查找具体实现

基本思想
用线性表来存储数据,从线性表的一端到另一端进行逐个比较,若找到要求值,查找成功,给出该记录在表中的位置。若始终无相等的值,则查找失败,给出失败信息。

1.普通的顺序查找

int n;				//设置n个数据
int data[n+1];		//用一维数组来存这n个数据,不从0开始存,从1开始存
int search(int k){
	int i=n;					//暂存数据个数
	while(i>0&&data[i]!=k){ 	//从最后一个开始比较,一直到i=1比较完成后结束循环
		i--;
	}
	return i;				//如果循环中找到对应值k,退出循环 返回位置
}

2.改进的顺序查找(带哨兵)
哨兵就是待查值,
把哨兵放到查找的尽头,做了一个保险,当查找失败时,最后找到了哨兵,会把哨兵的位置返回出去。
这样的优点是:免去了在查找过程中每一次比较后都要判断查找位置是否越界,从而提高查找速度。

int Search(int k)
{ 
    int i = n;        		//从数组高端开始比较
    data[0] = k;            //设置哨兵,放到比较方向的尽头,
    while (data[i] != k) 	//与之前相比较少了条件,不用判断下标i是否越界
        i--;
    return i; 
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值