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

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

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语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合,旨在帮助读者掌握这一高效的数据处理方法。
71 1
|
3月前
|
机器学习/深度学习 缓存 算法
Python算法设计中的时间复杂度与空间复杂度,你真的理解对了吗?
【10月更文挑战第4天】在Python编程中,算法的设计与优化至关重要,尤其在数据处理、科学计算及机器学习领域。本文探讨了评估算法性能的核心指标——时间复杂度和空间复杂度。通过详细解释两者的概念,并提供快速排序和字符串反转的示例代码,帮助读者深入理解这些概念。同时,文章还讨论了如何在实际应用中平衡时间和空间复杂度,以实现最优性能。
96 6
|
17天前
|
存储 算法 C++
【C++数据结构——图】图的邻接矩阵和邻接表的存储(头歌实践教学平台习题)【合集】
本任务要求编写程序实现图的邻接矩阵和邻接表的存储。需掌握带权有向图、图的邻接矩阵及邻接表的概念。邻接矩阵用于表示顶点间的连接关系,邻接表则通过链表结构存储图信息。测试输入为图的顶点数、边数及邻接矩阵,预期输出为Prim算法求解结果。通关代码提供了完整的C++实现,包括输入、构建和打印邻接矩阵与邻接表的功能。
41 10
|
3月前
|
搜索推荐 算法
插入排序算法的平均时间复杂度解析
【10月更文挑战第12天】 插入排序是一种简单直观的排序算法,通过不断将未排序元素插入到已排序部分的合适位置来完成排序。其平均时间复杂度为$O(n^2)$,适用于小规模或部分有序的数据。尽管效率不高,但在特定场景下仍具优势。
|
2月前
|
存储 搜索推荐 算法
【数据结构】树型结构详解 + 堆的实现(c语言)(附源码)
本文介绍了树和二叉树的基本概念及结构,重点讲解了堆这一重要的数据结构。堆是一种特殊的完全二叉树,常用于实现优先队列和高效的排序算法(如堆排序)。文章详细描述了堆的性质、存储方式及其实现方法,包括插入、删除和取堆顶数据等操作的具体实现。通过这些内容,读者可以全面了解堆的原理和应用。
130 16
|
3月前
|
机器学习/深度学习 存储 缓存
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
文章主要介绍了排序算法的分类、时间复杂度的概念和计算方法,以及常见的时间复杂度级别,并简单提及了空间复杂度。
62 1
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
|
3月前
|
存储 安全 数据库
除了 HashMap,还有哪些数据结构可以实现键值对存储?
【10月更文挑战第11天】 除了`HashMap`,其他常见支持键值对存储的数据结构包括:`TreeMap`(基于红黑树,键有序)、`LinkedHashMap`(保留插入顺序)、`HashTable`(线程安全)、`B-Tree`和`B+Tree`(高效存储大量数据)、`SkipList`(通过跳跃指针提高查找效率)及`UnorderedMap`(类似`HashMap`)。选择合适的数据结构需根据排序、并发、存储和查找性能等需求。
|
3月前
|
算法
[数据结构] -- 时间复杂度和空间复杂度
[数据结构] -- 时间复杂度和空间复杂度
33 0
|
3月前
探索顺序结构:栈的实现方式
探索顺序结构:栈的实现方式
|
3月前
|
存储 算法
【数据结构】二叉树——顺序结构——堆及其实现
【数据结构】二叉树——顺序结构——堆及其实现

热门文章

最新文章