数据结构与算法(绪论与算法)

绪论与算法

一、 基本概念和术语

**数据:**是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。
**数据元素:**是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。比如在人类中,人就是数据元素。
**数据项:**一个数据元素可以由若干个数据项组成。比如人的数据项就有眼睛、耳朵、鼻子、手等等…
**数据对象:**是性质相同的数据元素的集合,是数据的子集。性质相同是指数据元素具有相同数量和类型的数据项
**数据结构:**是相互之间存在一种或多种特定关系的数据元素的集合。

二、逻辑结构和物理结构

按照视点的不同,数据结构分为逻辑结构物理结构

1、逻辑结构

逻辑结构:是指数据对象中数据元素之间的相互关系
(1)集合结构。数据元素除了同属一个集合外,没有任何关系
(2)线性结构。数据元素之间是一对一的关系
(3)树形结构。数据元素之间
存在
一对多的关系
(4)图结构。数据元素是多对多的关系

2、物理结构

物理结构:是指数据的逻辑结构在计算机中的存储形式,也被称之为存储结构
(1)顺序存储结构
数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致

(2)链式存储结构
把数据元素存放在任意的存储单元里,存储单元可以是连续的,也可以是不连续的

三、算法

1、算法具有五个基本特性

输入、输出

算法具有零个或多个输入,至少有一个或多个输出

有穷性

算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间完成(比如一个算法几十年后一定会结束,但是那时候得出的结果意义就不大了)

确定性

算法的每一个步骤都具有一个确定的含义,不会出现二义性(歧义)

可行性

算法的每一步都能通过执行有限次数完成

2、算法的设计要求

正确性

体现在以下四个层次
(1)算法程序没有语法错误
(2)算法程序对于合法的输入数据能够产生满足要求的输出结果
(3)算法程序对于非法的输入数据能够得出满足规格说明的结果
(4)算法程序对于精心选择的,甚至刁难的测试数据都有满足要求的输出结果
一般情况下,我们把是否达到第三个层次作为算法是否正确的标准

可读性

算法设计的另一目的是为了便于自己和他人的阅读、理解和交流

健壮性

当输入数据不合法的时候,算法也能做出相关处理,而不是产生异常

时间效率高和存储量低

算法应该尽量满足时间效率高和存储量低的需求

四、时间复杂度和空间复杂度

时间复杂度

O()来体现时间复杂度的记法,也称之为大O记法
推导大O阶:
第一步:用常数1取代所有加法常数
第二步:只保留最高阶项
第三步:去除最高阶项的系数

例如:从1一直加到100
第一种方法一项一项加,1+2+3+4…+100
那么一共要执行99次加法运算
但是第一步可以用1代表取代所有的加法常数,也就是O(1)
例如:一个算法的步骤总共有3n^2+6n+10次
第一步之后:3n^2+6n+1
第二步之后:3n^2
第三步之后:n^2
因此最后时间复杂度为O(n^2)

空间复杂度

利用空间来换取时间
例如:判断某某年是不是闰年,第一种方法是利用算法计算,第二种方法是建立一个有2050个元素的数组,然后把所有的年份按下标的数字对应,如果是闰年,那么数组的这一项就是1,如果不是闰年,这一项就是0,然后闰年的判断就变成了查找这一年对应数组中的数字是什么。第一种方法消耗的时间大一点,第二个方法消耗的空间大一点。即用空间换取时间
最后,除非明确说明是空间复杂度,一般情况下复杂度都是指时间复杂度

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值