zoukankan      html  css  js  c++  java
  • 14.查找---顺序查找及优化(“哨兵”优化)

    /*
    8.2.1 顺序表查找算法
    顺序查找,a为数组,n为要查找的数组长度,key为要查找的关键词
    */
    int Sequential_Search(int *a, int n, int key)
    {
        int i;
        for(i = 1; i<=n; i++)
        {
            if(a[i] == key)
                return i;
        }
        return 0;
    }
    
    /*
    8.3.2 顺序表查找优化  
        “哨兵”模式,防止数组越界,极大的提高速度,很厉害的,不要小瞧他
        优化上边代码 a[i] 存在数组越界问题
        这种在查找方向的尽头放置“哨兵”免去了在查找过程中每一次比较后都要判断查找位置是否
        越界的小技巧,看似与原先差别不大,但在总数居较多时,效率提高很大,
        是非常好的编码技巧。当然,“哨兵”也不一定就一定要在数组开始,也可以在末端。
    */
    int Sequential_Search2(int *a, int n, int key)
    {
        int i;
        //设置a[0]为关键字值,我们称之为“哨兵”
        a[0] = key;
        //循环从数组尾部开始
        i=n;
        while(a[i] != key)
        {
            i--;
        }
        //返回0则说明查找失败
        return i;
    }
  • 相关阅读:
    《软件项目成功之道》阅读笔记02
    每日日报47
    每日日报46
    每日日报45
    WAMPSERVER打开phpmyadmin时遇到404错误——解决办法
    每日日报44
    每日日报43
    简单的利用Layui来实现登录功能
    01函数式编程概念
    03适配器模式
  • 原文地址:https://www.cnblogs.com/go-ahead-wsg/p/13221170.html
Copyright © 2011-2022 走看看