顺序查找

Posted jev-0987

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序查找相关的知识,希望对你有一定的参考价值。

顺序查找

  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...)}}

以上是关于顺序查找的主要内容,如果未能解决你的问题,请参考以下文章

html 将以编程方式附加外部脚本文件的javascript代码片段,并按顺序排列。用于响应式网站,其中ma

顺序查找的概念及实现代码详解

顺序查找和二分查找代码

查找上一个活动片段

Android 在 FragmentPagerAdapter 中更改片段顺序

leetcode查找算法(顺序查找,二分法,斐波那契查找,插值查找,分块查找)