- 个人网站: 路遥叶子
- 版权: 本文由【路遥叶子】原创、在CSDN首发、需要转载请联系博主
- 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦
- 想寻找共同成长的小伙伴,请点击【Java全栈开发社区】
1. 概述
1.1 推开数据结构的大门
1.2 利用计算机实现问题求解:一个从问题到程序的实现过程
1.3 认识了一个大佬:数据结构
2. 基本概念与术语学习
2.1 数据与数据结构
术语
逻辑结构
Data_Structures = (D, R )
存储结构
数据的操作
2.2 数据类型
2.3 抽象数据类型
3. 算法和算法分析
3.1 算法的基本概念
3.2 算法特性
3.3 算法目标
3.4 算法的描述
3.4 算法分析:概述
3.5 算法分析:时间复杂度
4. 每日一练
章节仅是该阅读书籍的总结和理解,若有不对或欠妥的地方,还请各位大佬批评指正!!!
感觉写的不错的,就拿起你的小手赶紧点赞评论收藏一下吧~~~ 赶紧动起来,让我们一起加油学习。
数据的逻辑结构(数学模型)
数据的存储结构
数据操作与运算
================================================
数据(Data):数据是信息的载体,是对客观事物的符号表示。能够被计算机程序识别、存储、加工和处理。数据还包括图像、声音等非数值数据。
数据元素(Data Element):是数据的基本单位,是一个个体。相当于表的一行。数据元素又可称为结点、顶点和记录。在树和图中,一个数据元素用一个圆圈表示。
数据项(Data Item):是数据元素的组成部分。相当于表的列。数据项又可分为两种:一种是简单数据项;另一种是组合数据项,例如:出生年月,可进一步划分为"年","月"和"日"等更小的数据项。
数据对象(Data Object):性质相同的数据元素的集合。相当于表。数据对象中的数据元素不会是孤立的,而是彼此相关的,这种彼此之间的关系称之为“结构”。
数据结构(Data Structure):相互之间存在一种或多种特定关系的数据元素的集合。
--------------------------------------------------------------------------------
逻辑结构:数据元素之间的逻辑关系,与数据存储无关,独立与计算机之外。
数据元素之间存在开始结点,终端结点,以及前驱和后继。除了开始和终端结点,其他结点由有一个前驱和一个后继。开始结点有一个后继,终端结点有一个前驱。
集合:元素之间没有关系,比较松散。
线性结构:元素之间存在==一对一==关系。
树形结构:元素之间存在==一对多==关系。
图形结构:元素之间存在==多对多==关系。
—— 有时也将逻辑结构分为两大类,一类是线性结构,另一类是非线性结构。其中树、图和集合都属于非线性结构。
—— 数据的逻辑结构需要2部分:数据元素(data)、数据元素之间的关系(relationship)
-------------------------------------------------------------------------------
存储结构:数据的存储结构,也称为物理结构,是数据的逻辑结构在计算机的实现。
它包括数据元素在计算机中的值存储表示和逻辑关系的存储表示
在计算机在最小的数据表示单位是二进制数的一位(bit)。
存储结构的4种方式:
顺序存储:在一片连续的存储空间中进行存储,数据元素的逻辑位置和物理位置关系保持一致。例如:数组
2. 链式存储:数据元素可以存储在任意的物理位置上,需要额外的部分存放在逻辑关系的指针来表示。例如:链表
3. 索引存储:存储数据的同时,额外的存储一个索引表。在查询时可以提高效率。
4. 散列存储:一般情况物理上可以将数据元素存储在一片连续的区域内,需要通过散列函数hash(哈希)
来确定存储位置。在查询时可以提高效率。
------------------------------------------------------------------------------------
—— 数据的逻辑结构、存储结构和运算是数据结讨论中不可分割的3个方面。他们中任何一个不同都将导致不同的数据结构。例如:
===========================================
—— 基本数据类型:值不可分解,只能作为一个整体来进行处理
===================================================
算法:对特定问题求解步骤的一种描述。是指令的有限序列。
有穷性:有限
确定性:需求确定、指令确定
有效性:指令都是由意义
输入:待处理的信息
输出:经处理后的信息
正确性:应满足具体问题的功能和性能要求,需求和实现对应。
可读性:使程序员能够读懂,编写代码时可以辅助注释。
健壮性:临界值的处理、无效数据的校验等。具有良好的容错性,具有正确的判断能力和及时纠错能力。
高效性:使用较少的资源(资源分2种:时间资源、空间资源)。一个好的算法要做到执行时所需时间尽量短,所需的最大存储空间尽量少。
算法的复杂度是衡量算法优劣的重要依据。
计算机资源主要分为时间资源和空间资源。
算法的复杂度分类:时间复杂度、空间复杂度。
时间复杂度:执行时间的长短。
空间复杂度:执行时空间需求量,也就是计算机资源的使用量。
主要考虑因素:
算法本身
问题规模即处理问题时所处理的数据元素的个数
程序设计所采用的程序语言选择
编译程序(JDK优劣)所产生的机器代码的质量
计算机执行指令的硬件速度
程序运行的软件环境
时间复杂度通过大O表示法
进行表示的,大O表达式只需要考虑最高次幂的项。
常量阶:O(1)
线性阶:O(n)
平方阶:O(n^2)
立方阶:O(n^3)
对数阶:O(log2n)
线性对数阶:O(nlog2n)
O (n) :一层循环
O(n^2):二层循环(99乘法表)
int n = 9;
for(int i = 0 ; i < n ; i ++) {
for(int j = 0 ; j < n : j ++) {
// 次数 n*n
}
}
int n = 9;
for(int i = 0 ; i < n ; i ++) { //时针
for(int j = 0 ; j < n : j ++) { //分针
for(int m = 0 ; m < n ; m++) { //秒针
// 次数 n * n * n }
}
}
西格玛Σ 求和
1. ( )是性质相同的数据元素的集合,是数据的子集。
A、数据元素
B.数据对象
C.数据结构
D.数据项
--------------------------------------------------------------------------------------------
2. 把数据存储到计算机中,并具体体现数据元素间的逻辑结构称为( )。
A.物理结构 (存储结构)
B.逻辑结构
C.算法的具体实现
D.给相关变量分配存储单元
--------------------------------------------------------------------------------------------
3. 从 n 个数中选取最大元素( )。
A.基本操作是数据元素间的交换 (比较)
B.算法的时间复杂度是 O(n2)
C.算法的时间复杂度是 O(n)
D.需要进行(n+1)次数据元素间的比较 (次数 (n-1))
--------------------------------------------------------------------------------------------
4. 数据的( )结构与所使用的计算机无关。
A.逻辑
B.物理
C.存储
D.逻辑与存储
--------------------------------------------------------------------------------------------
5. 数据的物理结构( )。
A.与数据的逻辑结构无关
B.仅仅包括数据元素的表示
C.只包括数据元素间关系的表示
D.包括数据元素的表示和关系的表示
--------------------------------------------------------------------------------------------
6. 数据结构中,与所使用的计算机无关的是数据的( )结构。
A.物理
B.存储
C.逻辑与物理
D.逻辑
--------------------------------------------------------------------------------------------
7. 数据元素是数据的基本单位,它( )。
A.只能有一个数据项组成
B.至少有二个数据项组成
C.可以是一个数据项也可以由若干个数据项组成
D.至少有一个数据项为指针类型
--------------------------------------------------------------------------------------------
8. 算法的时间复杂度与( )有关。
A.所使用的计算机
B.计算机的操作系统
C.算法本身
D.数据结构
--------------------------------------------------------------------------------------------
9. 同一种逻辑结构( )。
A.只能有唯一的存储结构
B.可以有不同的存储结构 (线性结构:可以使用顺序存储ArrayList、也可以链式存储结构LinkedList)
C.只能表示某一种数据元素之间的关系
D.以上三种说法均不正确
--------------------------------------------------------------------------------------------
10. 线性结构中数据元素的位置之间存在( )的关系。
A.一对一
B.一对多
C.多对多
D.每一个元素都有一个直接前驱和一个直接后继
--------------------------------------------------------------------------------------------
11. 树形结构中数据元素的位置之间存在( )的关系。
A.一对一
B.一对多
C.多对多
D.每一个元素都有一个直接前驱和一个直接后继
--------------------------------------------------------------------------------------------
12. 图形结构中数据元素的位置之间存在( )的关系。
A.一对一
B.一对多
C.多对多
D.每一个元素都有一个直接前驱和一个直接后继
--------------------------------------------------------------------------------------------
13. 以下特征中,( )不是算法的特性。
A.有穷性
B.确定性
C.有效性
D.有 0 个或多个输出
--------------------------------------------------------------------------------------------
14. 某算法的时间复杂度为 O(n),表明该算法的( )
A.问题规模为 n
B.执行时间等于 n
C.执行的时间与 n 成正比
D.问题规模与 n 成正比
--------------------------------------------------------------------------------------------
15. 以下算法的时间复杂度为( )。
void fun(int n){ int j=0; for (i=1;i<=n;i++) // i=i*2 j=j+i; }
A. O(n)
B. O(n2)
C. O(nlog2n)
D. O(log2n)
--------------------------------------------------------------------------------------------
16. 以下算法的时间复杂度为( )。
void fun(int n){ int sum=0; for ( int i=1;i<=n;i++) for ( int j=1;j<=n;j++) sum+=j*i; }
A. O(n)
B. O(n2)
C. O(nlog2n)
D. O(log2n)