王道计算机408数据结构 笔记1

本文详细介绍了数据结构的概念,包括数据元素、数据项、数据结构、数据对象和数据类型,强调了抽象数据类型(ADT)的重要性。数据结构的三要素包括逻辑结构(如集合、线性结构、树形结构和图状结构)和物理结构(顺序存储、链式存储、索引存储和散列存储)。此外,还讨论了算法的基本特征,如有穷性、确定性和可行性,并提及了好算法应具备的特质。
摘要由CSDN通过智能技术生成

1.1.0 数据结构在学什么

用程序代码把现实世界的问题信息化

鸡汤,可喝

用计算机高效处理这些信息从而创造价值

 

1.1.1 数据结构的基本概念

 

 学习建议:概念多 建议抓大放小

什么是数据:

什么是数据元素、数据项:

 

 排队顾客:每一波顾客是数据元素,每一波顾客的具体元素是数据项

个人理解:类似于结构体和属性

什么是数据结构、数据对象:

 

 排队顾客:

同一门店前后两拨顾客是两个数据元素,他们之间有先后关系,他们的集合是数据结构

两个门店的排队顾客没有直接关系,但是两者有相同的性质,他们的集合是数据对象

什么是数据类型、抽象数据类型:

数据类型是一个值的集合和定义在此几何上的一组操作的总称,每个类型包含一集合法的数据对象,并规定了这些对象的合法操作。:

1)原子类型:其值不可再分的类型,如bool类型,int类型

2)结构类型:其值可以再次份截为若干成分(分量)的数据类型,如结构体

抽象数据类型(Abstract Data Type,ADT)是抽象数据组织以及与之相关的操作:

抽象数据类型的基本思想是把数据定义为抽象的对象集合,只为它们定义可用的合法操作,并不暴露其内部实现的具体细节,不论是数据的表示细节还是操作的实现细节。当然,要使用一种对象,首先需要能构造这种对象,而后能操作它

(取自https://blog.csdn.net/Galen_xia/article/details/116278834 有不懂可以去看看大神的文章)

个人感觉:ADT与结构类型的差别是包含了具体的方法,类似于Java里的类

数据结构的三要素:

 

逻辑结构:数据元素之间的逻辑关系是什么

集合:基本不讨论

线性结构:数据元素之间一对一,一前一后,如排队

树形结构:数据元素之间一对多,一前多后

图(网)状结构:数据元素之间多对多

数据的物理结构(存储结构):如何让用计算机表示数据元素的逻辑关系

顺序存储:在逻辑上相邻的元素存贮在物理位置上也相邻的存贮单元里,元素之间的关系由存贮单元的邻接关系来体现

链式存储:逻辑上相邻的元素在物理存储上可以不相邻,借助元素存储地址的指针来表示元素之间的逻辑关系

索引存储:在存储信息的同时,还建立附加的索引表,索引表中的项称为索引项,索引项的一般形式是(关键字,地址)

散列存储:根据元素的关键字直接计算出该元素的存储地址,又称哈希(hash)存储,较难,后续摸索

 要点:

1、若采用顺序存储,各个元素在物理上必须是连续的;若采用非顺序存储,则各个元素在物理上可以是离散的。

2、数据的存储结构会影响存储空间分配的方便程度

3、数据的存储结构会影响数据运算的速度

数据的运算:施加在数据上的运算包括运算的定义和实现。运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤

1.2.1 算法的基本概念

 

 什么是算法?

程序 = 数据结构 + 算法

算法:如何处理这些信息,以解决实际问题

算法的特性:

有穷性:算法必须在又穷步之后结束,且每一步都可以在又穷的时间内完成(算法是又穷的的,程序可以是无穷的)

确定性:算法中的每条指令必须有确切的含义,对于相同的输入有相同的结果

(个人疑问:如果我写一个生成随机数的小程序,这个程序输入一个整数表示要输出几个随机数,相同的输入几乎不可能会有相同的结果,那么这个怎么理解)

可行性:算法中描述的操作可以通过已经实现的基本运算执行有限次来实现

输入输出:一个算法中有零个或多个输入,有一个或多个输出

好算法的特质:

1、正确性:算法能够正确的解决问题

2、可读性:能够让其他人读懂,没有歧义(算法可以用伪代码表示,甚至是文字)

3、健壮性:输入非法数据时,算法能适当的做出反应和处理,而不会产生莫名其妙的输出

4、高效率和低存储量需求:执行速度快,时间复杂度低;不费内存,空间复杂度低(最多研究)

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值