经典算法之顺序查找(Sequential Search)
活动地址: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)相关推荐
- 经典算法之顺序查找法
活动地址:CSDN21天学习挑战赛 前言 已经进入八月份了,暑假也正式进入倒计时.本人前段时间在学习前端中移动端部分的微信小程序开发知识,也算勉勉强强能入门(因为没有前端三件套的基础,前端居然是从小程 ...
- 顺序查找(Sequential Search)
1.定义 顺序查找又叫线性查找,是最基本的查找技术. 2.基本思想 从表的一端开始(第一个或最后一个记录),顺序扫描线性表,依次将扫描到的结点关键宇和给定值K相比较.若当前扫描到的结点关键字与K相等, ...
- 经典算法 之 折半查找 python实现
活动地址:CSDN21天学习挑战赛 折半查找 1.查找算法 基本概念 不同查找算法分类 2. 折半查找 伪代码 算法评价 3. 算法实践(Python) 折半查找 参考 1.查找算法 查找(S ...
- 经典算法之二分查找法(俗称基本二分搜索法)
经典算法之二分查找法(俗称二分搜索法) 文章目录 经典算法之二分查找法(俗称二分搜索法) 前言 一.什么是二分查找法? 二.代码实现 总结 前言 就算法而言,我们主要学习的是数学+思维+逻辑+数据结构 ...
- 数据结构之查找算法:顺序查找
查找算法:顺序查找 思维导图: 顺序查找的定义: 顺序查找的代码实现: 顺序查找的性能: 思维导图: 顺序查找的定义: 顺序查找的代码实现: typedef struct { //查找表数据结构int ...
- 经典算法之折半查找法
活动地址:21天学习挑战赛 目录 一. 算法 概述 算法过程 二.代码实践 三.复杂度分析 时间复杂度 空间复杂度 四.优缺点分析 优点 缺点 一. 算法 概述 折半查找( Binary Search ...
- 查找算法-(顺序查找、二分查找、插值查找、斐波那契查找)
1)顺序查找或叫线性查找 就是顺序遍历匹配 2)二分查找 package search;public class BinarySearch {/*** 二分查找数组必须有序*//**** @param ...
- 查找算法(顺序查找、二分法查找、二叉树查找、hash查找)
查找功能是数据处理的一个基本功能.数据查找并不复杂,但是如何实现数据又快又好地查找呢?前人在实践中积累的一些方法,值得我们好好学些一下.我们假定查找的数据唯一存在,数组中没有重复的数据存在. (1)顺 ...
- python二分法查找算法_顺序查找算法和折半(二分法)查找算法,C语言查找算法详解...
查找是指在大量的信息中寻找一个特定的信息.在计算机中,查找是非常重要的一个应用,比如"百度".查找算法的好坏直接影响查找的速度. 常用的查找算法主要有顺序查找和折半(二分法)查找: ...
最新文章
- 前沿分享|阿里云数据库解决方案资深专家 李圣陶:云原生数据库解决方案 加速企业国产化升级
- 用php+ajax+echarts.js 实现统计每分钟答题曲线图
- oracle中sysdate函数 ro,ORACLE常用函數
- 深度学习进阶NLP:word2vec的高速化
- 高等数学辅导讲义_研学堂:考研数学辅导书测评
- Chango的数学Shader世界(十六)RayTrace三维分形(一)—— ue4中最简单的RayMarch
- js继承的几种实现方式
- google浏览器将页面保存为图片
- lol12.11服务器维护,LOL2018年11月13日更新维护到几点
- python3自动化软件发布系统pdf_Python 3自动化软件发布系统 -Django 2实战
- java opts xmn_tomcat设置JAVA_OPTS
- 解决双启动GRLDR missing故障的方法
- java将图片转化为base64码
- WinRT surface屏幕常亮设置
- 关于anchor的解释
- Mongoose disconnected. Mongoose connection error: MongoError: Authentication failed. (node:1532) Unh
- GBase 8a支持国产CPU,ARM CPU,华为泰山的鲲鹏(Kunpeng),曙光的海光(Hygon),申威(SW)
- conemu 打开wsl 报错
- zookeeper--将学习过的知识放置到一个文档中,总结
- iOS开发之 iPhone各种Icon图标尺寸