(1.3.2)查找:顺序查找与哨兵

 简单顺序查找对数据表的特性没有要求,即是否具有递增递减特性基本不影响查找的性能。基本死就

是从表的一段开始逐个比较元素,若找到则返回元素在表中对应位置;否则,则返回一个无意义的位置标

识。

/* 顺序查找,a为数组,n为要查找的数组元素个数,key为要查找的关键字*/
int Sequential_Search(int *a, int n, int key)
{
     int i = 0;
     for(; i < n; i++)
     {
          if(a[i] == key)
               return i;
     }
     return 0;
}
 值得一提的是设置监视哨这一思想,将a[0]设置成监视哨则可以避免每次比较元素后都需要判断下标是

否越界这一问题,从而节省了时间。当然,a[0]中将不能在存放有效元素。

 下面介绍一个以整型数组为例的查找实现:
    /*带哨兵的直接顺序查找*/
int sequential_search(int a[],int n,int key)  //n为数组元素个数,key为待查找元素
{
    int i=n;
    a[0]=key;   //a[0]是监视哨

    while(a[i]!=key)  //若数组中无key,则一定会得到a[0]=key
        i--;

    return i;     //查找失败返回0
}

总目录

各查找和排序等算法一览

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值