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;
    }
  • 相关阅读:
    C# SQLiteHelper
    C# 自定义等待窗口
    C# Work PPT to PDF
    SQL 分隔字符串
    SQL 客户端查看
    SQL 自定义四舍五入
    SQL 并联更新
    C# 委托简单例子
    每天一个Linux命令(52)telnet命令
    每天一个Linux命令(51)ss命令
  • 原文地址:https://www.cnblogs.com/go-ahead-wsg/p/13221170.html
Copyright © 2011-2022 走看看