21days算法学习挑战赛(第一天)


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

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…

一、算法的基本概念

算法即能够对一定规范的输入,在有限时间内获得所要求的输出。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。

1、 算法的五个特征:

(1)有穷性
执行程序的运行时间是有限的,能够结束。

(2)确定性
要有明确的定义,不模棱两可。

(3)可行性
能有效地执行,并得到确定的结果。

(4)输入
算法执行时必要的数据,有些情况下,数据已经包含在算法中,算法执行时不需要任何数据,所以一个算法可以有零个或多个输入。

(5)输出
数据通过算法处理后的结果,算法必须要有一个或多个输出,没有输出的算法是毫无意义的。

2、 算法的设计的要求

(1)正确性
没有语法错误,对合法的数据输入能够产生满足要求的输出。

(2)可读性
算法要便于阅读、理解和交流

(3)健壮性
对不规范的输出的应对和处理能力。

(4)效率高和存储量低
执行时间快;占用的空间少。

3、算法的分析
(1)时间复杂度
度量执行时间的长短。算法的时间复杂度是一个函数,它定性描述该算法的运行时间。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。

(2)空间复杂度
度量执行临时占用存储空间大小。记做S(n)=O(f(n))。
 

为了便于后面对各种查找算法的比较,首先介绍查找的概念和术语。

1、查找表

   查找表是由同一类型的数据元素 (或记录)构成的集合。由于 “集合”中的数据元素之间存
在着完全松散的关系,因此查找表是一种非常灵便的数据结构,可以利用其他的数城结构來实现。

2、关键字

  关键字是数据元素(或记录)中某个数据项的值,用它可以标识一个数据元素(或记录)。若此关键字可以唯一地标识一个记录,则称此关键字为主关键字 (对不同的记录,其主关键字均不同)。反之,称用以识別若干记录的关键字为次关键字。当数据元素只有一个数据项时,其关键字即为该数据元素的值

3、查找

  查找是指根据给定的某个值,在查找表中确定一个其关键字等于给定值的记录或数据元茶。
若表中存在这样的一个记录,则称查找成功,此时查找的结果可给出;整个记录的信息,或指示该记录在查找表中的位置;若表中不存在关键字等于给定值的记录,则称查找不成功:此时查找的结果可给出一个“空”记录或“空”指针。

4、动态查找表和静态查找表

若在杳找的同时对表做修改操作(如插入或着删除),则相应的表称之为动态查找表,否则称之为静态查找表。换句话说,动态查找表的表结构本身是在查找过程中动态生成的,即在创建表时,对于给定值,若表中存在其关键字等于给定值的记录,则查找成功返回;否则插入的关键字等于给定值的记录。

顺序查找

  顺序查找(Sequential Search)的查找过程为:从表的一端开始,依次将记录的关键字和给定的值进行比较,若某个记录的关键字和给定的值相等,则查找成功;反之,若扫瞄整个表后,仍未找到关键字和给定记录相等的记录,则查找失败。顺序查找的方法三个适用于线性表的顺序存储结构,有适用于线性表的链式储存结构。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小董和你拼了!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值