数据结构— 基本概念、逻辑和存储结构、数据类型与操作、算法特性与时间复杂度(下)

简介: 数据结构— 基本概念、逻辑和存储结构、数据类型与操作、算法特性与时间复杂度

2.2 数据类型

—— 基本数据类型:值不可分解,只能作为一个整体来进行处理

  • 整型【byte、short、int、long】
  • 浮点型【float、double】
  • 布尔型【boolean】
  • 字符型【char】


2.3 抽象数据类型


抽象:指抽取反映问题本质的东西,忽略其非本质的细节。在求解过程中只关注人们“做什么”,而不是“怎么做”。

数据抽象:将数据使用与实现分离开来。一般通过抽象数据类型来实现。

数据抽象类型:指一数据值的集合和定义在这个集合是的一组操作。是指隐藏了数据的存储结构并且不涉及操作的实现细节的数据类型。

抽象类型的描述有2种:

使用抽象类【abstract】表示,抽象类型的实现用继承该抽象类的子类表示:

用Java接口【interface】表示,抽象类型的实现用实现接口的类表示。

===================================================


3. 算法和算法分析


3.1 算法的基本概念

  • 算法:对特定问题求解步骤的一种描述。是指令的有限序列

3.2 算法特性

  • 有穷性:有限
  • 确定性:需求确定、指令确定
  • 有效性:指令都是由意义
  • 输入:待处理的信息
  • 输出:经处理后的信息

619bd19b7cee4b549a4bbfe674514223.png

3.3 算法目标


正确性:应满足具体问题的功能和性能要求,需求和实现对应。


可读性:使程序员能够读懂,编写代码时可以辅助注释。


健壮性:临界值的处理、无效数据的校验等。具有良好的容错性,具有正确的判断能力和及时纠错能力。


高效性:使用较少的资源(资源分2种:时间资源、空间资源)。一个好的算法要做到执行时所需时间尽量短,所需的最大存储空间尽量少。


3.4 算法的描述


可采用某种语言,也可借助数据流程图来表示。

描述算法的语言主要有三种形式:

自然语言:用中文或英文文字来描述,其优点是简单、易懂,但严谨不够。

程序设计语言: 采用某种具体的程序设计语言来描述算法。其优点是算法不用修改可直接执行。但使用程序来描述算法并不容易,也不直观,往往需加入大量注释。

伪代码:是一种类似于程序设计语言的语言。【由于这种描述不是真正的程序设计语言。因而称为伪代码】。它介于自然语言和程序设计语言之间。


3.5 算法分析:时间复杂度


主要考虑因素:


算法本身


问题规模即处理问题时所处理的数据元素的个数


程序设计所采用的程序语言选择


编译程序(JDK优劣)所产生的机器代码的质量


计算机执行指令的硬件速度


程序运行的软件环境


时间复杂度通过大O表示法进行表示的,大O表达式只需要考虑最高次幂的项。


常量阶:O(1)


线性阶:O(n)


平方阶:O(n^2)


立方阶:O(n^3)


对数阶:O(log2n)


线性对数阶:O(nlog2n)


8d3e64c054df450b974c2a93d8f6e127.png


  • O(log2n) 指数计算:R表示次数


47d2a4d6acdc476c8a37e8550a24da7e.png


  • 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
    }
}
  • O(n^3):三层循环
 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        }    
    }
}
  • 西格玛Σ 求和

f4471a3e4e2f44f38d3f949b52899100.png

  • 需求:1+2+3+4+....+n

1a59c283ffe94b488f6eb1a6be551ffe.png

4. 每日一练


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)


章节仅是该阅读书籍的总结和理解,若有不对或欠妥的地方,还请各位大佬批评指正!!!

相关文章
|
2月前
|
算法 数据处理 C语言
C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合
本文深入解析了C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合,旨在帮助读者掌握这一高效的数据处理方法。
65 1
|
5天前
|
存储 算法 测试技术
【C++数据结构——树】二叉树的遍历算法(头歌教学实验平台习题) 【合集】
本任务旨在实现二叉树的遍历,包括先序、中序、后序和层次遍历。首先介绍了二叉树的基本概念与结构定义,并通过C++代码示例展示了如何定义二叉树节点及构建二叉树。接着详细讲解了四种遍历方法的递归实现逻辑,以及层次遍历中队列的应用。最后提供了测试用例和预期输出,确保代码正确性。通过这些内容,帮助读者理解并掌握二叉树遍历的核心思想与实现技巧。
23 2
|
21天前
|
存储 运维 监控
探索局域网电脑监控软件:Python算法与数据结构的巧妙结合
在数字化时代,局域网电脑监控软件成为企业管理和IT运维的重要工具,确保数据安全和网络稳定。本文探讨其背后的关键技术——Python中的算法与数据结构,如字典用于高效存储设备信息,以及数据收集、异常检测和聚合算法提升监控效率。通过Python代码示例,展示了如何实现基本监控功能,帮助读者理解其工作原理并激发技术兴趣。
55 20
|
18天前
|
算法 安全 C++
用 C++ 算法控制员工上网的软件,关键逻辑是啥?来深度解读下
在企业信息化管理中,控制员工上网的软件成为保障网络秩序与提升办公效率的关键工具。该软件基于C++语言,融合红黑树、令牌桶和滑动窗口等算法,实现网址精准过滤、流量均衡分配及异常连接监测。通过高效的数据结构与算法设计,确保企业网络资源优化配置与安全防护升级,同时尊重员工权益,助力企业数字化发展。
38 4
|
1月前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
76 1
|
7天前
|
算法 数据安全/隐私保护
室内障碍物射线追踪算法matlab模拟仿真
### 简介 本项目展示了室内障碍物射线追踪算法在无线通信中的应用。通过Matlab 2022a实现,包含完整程序运行效果(无水印),支持增加发射点和室内墙壁设置。核心代码配有详细中文注释及操作视频。该算法基于几何光学原理,模拟信号在复杂室内环境中的传播路径与强度,涵盖场景建模、射线发射、传播及接收点场强计算等步骤,为无线网络规划提供重要依据。
|
20天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
156 80
|
8天前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
|
8天前
|
算法
基于龙格库塔算法的锅炉单相受热管建模与matlab数值仿真
本设计基于龙格库塔算法对锅炉单相受热管进行建模与MATLAB数值仿真,简化为喷水减温器和末级过热器组合,考虑均匀传热及静态烟气处理。使用MATLAB2022A版本运行,展示自编与内置四阶龙格库塔法的精度对比及误差分析。模型涉及热传递和流体动力学原理,适用于优化锅炉效率。