zoukankan      html  css  js  c++  java
  • 顺序查找

    顺序查找

    1. 算法思想
    2. 算法实现
    3. 算法优化

    顺序查找的算法思想

    顺序查找,又叫“线性查找”,通常用于线性表

    从头到尾查

    顺序查找的实现

    typedef struct{			//查找表的数据结构(顺序表)
        ElemType *elem;		//动态数组的基址
        int TableLen;		//表的长度
    }SSTable;
    
    //顺序查找
    int Serach_Seq(SSTable ST,ElemType key){
        int ;
        for(i=0;i<ST.TableLen && ST.elem[i] != key;++i); 
        //查找成功,则返回元素下标;查找失败,则返回-1
        return i == ST.TableLen ? -1 : i;
    }
    

    顺序查找的实现(哨兵)

    typedef struct{
        ElemType *elem;
        int TableLen;
    }
    
    //顺序查找
    int Search_Seq(SSTable ST,ElemType key){
        ST.elem[0] = key;			//哨兵
        int i;
        for(i=ST.TableLen;ST.elem[i]!=key;--i);
        return i;
    }
    

    优点:无需判断是否越界,效率更高。

    查找效率分析

    顺序查找的优化(对有序表)

    共有n+1种查找失败的情况

    [ASL_{失败} = frac{1+2+3+...+n+n}{n+1} = frac{n}{2}+frac{n}{n+1} ]

    用查找判定树分析ASL

    顺序查找的优化(被查概率不相等)

    把被查找概率大的放在前面。

    知识回顾

    {{uploading-image-757343.png(uploading...)}}

  • 相关阅读:
    RSA加密系统
    安装homebrew
    go helloworld
    下载文件checksum
    6月3日
    6月1日
    5月30日
    5月28日
    5月26日
    5月24日
  • 原文地址:https://www.cnblogs.com/jev-0987/p/13307719.html
Copyright © 2011-2022 走看看