2022-数据结构复习

第一章 绪论

(零)基本内容:

数据结构相关的概念和术语(-1)
数据结构三要素:逻辑结构,存储结构,数据运算(0)
算法时间复杂度和空间复杂度的分析计算(1)

(一)数据结构的基本概念

1.数据结构的基本术语
(1)数据,是信息的载体,是描述客观事物属性的数,字符以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。

(2)数据元素,是数据的基本单元。一个数据元素又由若干个数据项组成,数据项是组成数据元素的不可分割的最小单位。
例如,学生就是数据元素,而学号,性别,年龄等就是数据项。

(3)数据对象,是指具有相同性质的数据元素的集合,是数据的一个子集。
例如整数的数据对象就是:0,-1,1,2,-2等等

(4)数据类型,是一个值得集合和定义在此集合上的一组操作的总称。
原子数据:值不可再分的数据类型。
结构数据:值可在分解为若干个数据类型。
抽象数据类型:抽象数据组织及与之相关的操作(三元组表示,构成一个完整的数据结构

(5)数据结构,是相互之间存在一种或多种特定关系的数据元素的集合。元素之间的关系称为结构。
主要包括:逻辑结构,存储结构,数据运算。

2.数据结构的三要素

(1)数据的逻辑结构:数据元素之间的逻辑关系,与存储无关,独立于计算机。数据的逻辑结构主要分为线性结构(线性表)和非线性结构(图,树,集合)。

集合:数据元素同属一个集合。
线性结构:数据元素一对一的关系。
树型结构:数据元素一对多的关系。
图状结构:数据结构多对多的关系。

(2)数据的存储结构,指数据结构在计算机中的表示,也称物理结构。包括数据元素的表示和关系的表示。存储结构是用计算机语言实现的逻辑结构。数据的存储结构分为:顺序存储,链式存储,索引存储和散列存储。

顺序存储;把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中。优点:随机存取和顺序存取都行。缺点:只能使用相邻的一块存储单元,会产生外部碎片。

链式存储:逻辑上相邻但是但物理上不一定相邻,借助指针来表示存储元素之间的关系。优点:会利用所有存储单元。缺点:占用额外的存储空间,只能顺序存取。

索引存储

散列存储

(3)数据的运算:对运算的定义和实现。运算的定义是对逻辑结构,运算的实现是对存储结构。

(二)算法和算法的评价

---------------------------------------------------------(一月十六日晚)
1.算法的定义:算法是对问题求解步骤的描述。
(1)有穷性:在执行有穷步之后结束。
(2)确定性:每条指令必须有确切的含义,对于相同的输入只能得到相同的输出。
(3)可行性:操作可实现。
(4)输入
(5)输出
好的算法还有:正确性,可读性,健壮性,效率和低储存量的需求。
2.算法的效率:时间复杂度和空间复杂度
重点:关于时间复杂度的计算(务必全面)
----------------------------0:23,虽然没写完,太困了,孩子以后白天再也不摸鱼了,明天继续
----------------------------------------------一月十八日晚:拖(本人废物)
------------------------------------------------------------一月十九日夜(咕)

(1)时间复杂度:指该语句在算法中被重复执行的次数。T(n)
算法的时间复杂度遵循着加法原则和乘法原则。
加法原则:取其最大时间复杂度原则。
乘法原则:时间复杂度的乘积。
(2)时间复杂度的计算:(常见简单的不列举了)
第一种:O(log(n))

for(int i = 1; i<n; i = i*2) {
    cout<<i;
}

计算过程:
在这里插入图片描述

第二种:O(n^2)

int a=0;
for(int i = 0; i<=n; i++) {
    for(int j = 0; j<=n; j++) {
            a++;
}

第三种:O(n^3)
第四种:O(n!)
举个较为复杂的例题
在这里插入图片描述
(2)常见的排序算法的时间复杂度
在这里插入图片描述
(4)总结:
算法的时间复杂度体型主要分为两种
第一种:循环主体中的变量参与循环条件的判断
此类题应该找出主体语句中与T(n)成正比的循环变量,带入计算。例如:
在这里插入图片描述
第二种:循环主体中的变量与循环条件无关
采用数学归纳法或直接累计循环次数,只需要知道主体语句的循环次数就行。
递归程序使用公式进行递推就行。
非递归则采用累计次数就行。
--------------------------------------------------------------一月二十日(晚)

第二章线性表

二月六日晚完结,以后有时间码字吧

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了复习数据结构和Java编程语言,你可以按照以下步骤进行: 1. 确保你已经掌握了Java SE的基础知识。这包括Java的语法、数据类型、流程控制语句、面向对象编程等。如果你需要巩固这些基础知识,可以通过阅读相关的教材或参加在线课程来加强你的理解。 2. 接下来,你可以进一步了解JDBC(Java Database Connectivity)。JDBC是Java用于与数据库进行交互的标准API。你可以学习如何连接到数据库、执行SQL查询和更新操作,并了解如何处理结果集。有关JDBC的更多信息,可以查阅Java官方文档或参考相关的教程。 3. 数据结构中的树形结构是非常重要的一部分。确保你对树的概念和常见的树结构(如二叉树、AVL树、B树等)有一个清晰的理解。你可以阅读关于树的教材或参考在线资源来加深你对树的理解。 4. 如果你想进一步学习数据库建模和设计,可以初步了解PowerDesigner数据库建模工具的使用。这个工具可以帮助你设计和管理数据库模型,并生成相应的DDL脚本。 5. 最后,了解UML(Unified Modeling Language)统一建模语言也是非常有帮助的。UML是一种用于描述和设计软件系统的标准化语言。了解UML的基本概念和常用的建模图形(如类图、时序图、用例图等)将使你能够更好地理解和交流软件系统的设计。 通过按照上述步骤进行复习,你将能够深入了解数据结构和Java编程,并为进一步的学习和实践打下坚实的基础。记得多进行实践和练习,以加深对知识的理解和应用。祝你学习顺利!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值