活动地址:CSDN21天学习挑战赛

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。

文章目录

  • 1. 前言
  • 2. 算法基本概念
  • 4. 顺序查找
    • 4.1 伪代码
    • 4.2 Java 版
    • 4.3 Python 版
  • 4. 算法效率分析
    • 4.1 时间复杂度
    • 4.2 空间复杂度

1. 前言

最近小编在跟着大神@一头小山猪学习算法,学习的目的主要是想督促自己学习,算法是基础,需要经常回顾,所以小编整了下学习内容,当作自己的笔记,也希望自己的blog可以帮助有需要的人。
在学习之前需要有一些基础,比如,什么是算法,怎么评估算法的好坏呢等等,那小编就用非常简洁的语言再帮大家回顾一下。

2. 算法基本概念

算法简而言之就是步骤明确的解决问题的方法。
算法的效率是通过时间复杂度空间复杂度来评估的。

  • 时间复杂度:
    就是每一段代码的执行时间的总和,常见的时间复杂度有(由低到高):
  • 空间复杂度:
    算法运行时需要额外的临时变量的个数或者多少存储结构。

4. 顺序查找

今天主要给小伙伴们分享是顺序查找,那何为顺序查找?
顺序查找又称为线性查找,基本思想是:从线性表的一端开始,依次将线性表中记录的元素与给定值进行比较,若线性表中的元素等于给定值,表示查找成功,返回元素下标;否则查找失败,返回-1。

4.1 伪代码

伪代码如下

//while循环
i = 1
while i <= A.lengthif A[i] == keyreturn ii++
return -1
//或者for循环
i = 1
for (i = 1; i <= A.length; i++)if A[i] = keyreturn i
return -1

针对顺序查找,小编提供了两种语言

4.2 Java 版

public class SequentialSearch {public static void main(String[] args) {int[] a = { 11, 34, 20, 10, 12, 35, 41, 32, 43, 14 };int key = 10;int result = search(a, key);// System.out.println(result);if (result != -1) {System.out.println("10的下标为:" + result);} else {System.out.println("找不到该元素");}}private static int search(int[] a, int key) {for (int i = 0; i < a.length; i++) {if (a[i] == key) {return i;}}return -1;}
}

4.3 Python 版

def sequent(alist,key):for i in range(len(alist)):if alist[i]==key:return ireturn Noneif __name__ == '__main__':alist = [11, 34, 20, 10, 12, 35, 41, 32, 43, 14]key = 41result = sequent(alist,key)print(result)

4. 算法效率分析

4.1 时间复杂度

  • 最坏情况
    最坏的情况是遍历了整个线性表,都没有找到目标元素。循环次数和N相关,所以时间复杂度为O(n)。
  • 最好情况
    遍历第一个元素就找到了目标元素。所以时间复杂度为O(1)。
  • 平均情况
    综上两种情况,得出顺序查找的时间复杂度为O(n),属于查找较慢的算法。

4.2 空间复杂度

执行算法时并未改变原有集合,只需要一个额外的变量控制索引变化,所以空间复杂度为O(1)。


结语:你若喜爱自己的价值,你就得给世界创造价值。

经典算法之顺序查找(Sequential Search)相关推荐

  1. 经典算法之顺序查找法

    活动地址:CSDN21天学习挑战赛 前言 已经进入八月份了,暑假也正式进入倒计时.本人前段时间在学习前端中移动端部分的微信小程序开发知识,也算勉勉强强能入门(因为没有前端三件套的基础,前端居然是从小程 ...

  2. 顺序查找(Sequential Search)

    1.定义 顺序查找又叫线性查找,是最基本的查找技术. 2.基本思想 从表的一端开始(第一个或最后一个记录),顺序扫描线性表,依次将扫描到的结点关键宇和给定值K相比较.若当前扫描到的结点关键字与K相等, ...

  3. 经典算法 之 折半查找 python实现

    ​ ​ 活动地址:CSDN21天学习挑战赛 折半查找 1.查找算法 基本概念 不同查找算法分类 2. 折半查找 伪代码 算法评价 3. 算法实践(Python) 折半查找 参考 1.查找算法 查找(S ...

  4. 经典算法之二分查找法(俗称基本二分搜索法)

    经典算法之二分查找法(俗称二分搜索法) 文章目录 经典算法之二分查找法(俗称二分搜索法) 前言 一.什么是二分查找法? 二.代码实现 总结 前言 就算法而言,我们主要学习的是数学+思维+逻辑+数据结构 ...

  5. 数据结构之查找算法:顺序查找

    查找算法:顺序查找 思维导图: 顺序查找的定义: 顺序查找的代码实现: 顺序查找的性能: 思维导图: 顺序查找的定义: 顺序查找的代码实现: typedef struct { //查找表数据结构int ...

  6. 经典算法之折半查找法

    活动地址:21天学习挑战赛 目录 一. 算法 概述 算法过程 二.代码实践 三.复杂度分析 时间复杂度 空间复杂度 四.优缺点分析 优点 缺点 一. 算法 概述 折半查找( Binary Search ...

  7. 查找算法-(顺序查找、二分查找、插值查找、斐波那契查找)

    1)顺序查找或叫线性查找 就是顺序遍历匹配 2)二分查找 package search;public class BinarySearch {/*** 二分查找数组必须有序*//**** @param ...

  8. 查找算法(顺序查找、二分法查找、二叉树查找、hash查找)

    查找功能是数据处理的一个基本功能.数据查找并不复杂,但是如何实现数据又快又好地查找呢?前人在实践中积累的一些方法,值得我们好好学些一下.我们假定查找的数据唯一存在,数组中没有重复的数据存在. (1)顺 ...

  9. python二分法查找算法_顺序查找算法和折半(二分法)查找算法,C语言查找算法详解...

    查找是指在大量的信息中寻找一个特定的信息.在计算机中,查找是非常重要的一个应用,比如"百度".查找算法的好坏直接影响查找的速度. 常用的查找算法主要有顺序查找和折半(二分法)查找: ...

最新文章

  1. 前沿分享|阿里云数据库解决方案资深专家 李圣陶:云原生数据库解决方案 加速企业国产化升级
  2. 用php+ajax+echarts.js 实现统计每分钟答题曲线图
  3. oracle中sysdate函数 ro,ORACLE常用函數
  4. 深度学习进阶NLP:word2vec的高速化
  5. 高等数学辅导讲义_研学堂:考研数学辅导书测评
  6. Chango的数学Shader世界(十六)RayTrace三维分形(一)—— ue4中最简单的RayMarch
  7. js继承的几种实现方式
  8. google浏览器将页面保存为图片
  9. lol12.11服务器维护,LOL2018年11月13日更新维护到几点
  10. python3自动化软件发布系统pdf_Python 3自动化软件发布系统 -Django 2实战
  11. java opts xmn_tomcat设置JAVA_OPTS
  12. 解决双启动GRLDR missing故障的方法
  13. java将图片转化为base64码
  14. WinRT surface屏幕常亮设置
  15. 关于anchor的解释
  16. Mongoose disconnected. Mongoose connection error: MongoError: Authentication failed. (node:1532) Unh
  17. GBase 8a支持国产CPU,ARM CPU,华为泰山的鲲鹏(Kunpeng),曙光的海光(Hygon),申威(SW)
  18. conemu 打开wsl 报错
  19. zookeeper--将学习过的知识放置到一个文档中,总结
  20. iOS开发之 iPhone各种Icon图标尺寸

热门文章

  1. PHP 7 vs HHVM性能对比 – 运维生存时间
  2. 终结符与元符号的区别
  3. 小罐茶回应“大师累不累”:并非大师手工去炒茶
  4. 5-3 Seaborn 分布绘图
  5. 二进制 原码 反码 补码
  6. mdp框架_强化学习-MDP(马尔可夫决策过程)算法原理
  7. Python怎么用大数据分析_用Python制作大数据教程/如何使用Python分析大数据
  8. 南京上海华为OD在招人了
  9. HTML+CSS静态网页练习案例(转动的八卦图)
  10. 多渠道增加营收 | 游戏盈利策略 · 第一期