数据结构(三)查找算法(1)顺序查找

一片存储空间的中的数据既可能是有序的、也可能是无序的,有序可以是升序、降序、分块升序等等

对于无序存放的数组只能通过顺序查找的方法找到想要的数据

顺序查找就是从数据空间的一端到另一端,逐个数据进行比对,直至找到想要的数据

按照这种说法,最终可能出现两种情况:①找到元素,②找不到,超出边界

这样每次需要判断两个条件,对于顺序表,可以设置一个哨兵,即将数组的首(或尾)空间空出来,平时不存放数据,查找的时候用来存放需要查找的数据,这样就不需要再频繁判断是否超出查找边界,减少查找时间

对于链表,如果数据量极大,也可以创建一个哨兵节点以节省时间,若数据量较小,则会延长查找时间

 

 

无哨兵顺序表顺序查找:

int orderFind(int iX, int *aiArray, int iSize)
{
    int iLoc;

    for (iLoc = iSize - 1; aiArray[iLoc] != iX && iLoc > 0; iLoc--);

    return iLoc;
}

有哨兵顺序表顺序查找:

int orderFind(int iX, int *aiArray, int iSize)
{
    int iLoc;

    aiArray[0] = iX;
    for (iLoc = iSize - 1; aiArray[iLoc] != iX; iLoc--);

    return iLoc;
}

 

链表顺序查找:

PT_List orderFind(int iX, PT_List ptHead)
{
	PT_List ptLoc = ptHead->ptNext;

	while (ptLoc && ptLoc->iData != iX)
		ptLoc = ptLoc->ptNext;


	return ptLoc;
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值