绪论
数据结构概念
- 数据结构是具有
特定关系
的数据元素的集合。 - 在数据结构中,按存储结构可把数据结构分为
顺序结构和链式结构
;按逻辑结构分为线性结构和非线性结构
。 数据项
是数据的最小单位【不可分割的最小可标识单位】。
数据元素
是数据的基本单位。数据可由若干个数据元素构成。- 数据结构涉及数据的逻辑结构、存储结构和施加在其上的操作。
- 数据的逻辑结构是
数据元素之间逻辑
关系的整体。 - 下列术语中,( )与数据的存储结构无关。
- 循环队列:使用顺序表表示的队列,是一种数据结构。
- 堆栈
- 散列表:既描述逻辑结构又描述物理结构
- 单链表:既描述逻辑结构又描述物理结构
数据存储结构有顺序存储、链式存储、索引存储和散列存储。
- 在下列数据结构中,用计算关键字来确定其存储位置的数据结构是
- Hash表
- 二叉树搜索
- 链式结构
- 顺序结构
散列存储方式又称Hash存储。散列存储是根据节点的关键字直接计算出该节点的存储地址的一种存储方式。
- 下列关于算法的说法正确的是:
- 算法最终必须由计算机程序实现
- 一个算法所画时间等于该算法中每条语句执行时间之和
- 算法的可行性是指指令不能有二义性
算法是对特定问题求解步骤的一种描述。A错
算法的可行性即算法中描述的操作都是可以通过已经实现的基本操作执行有限次来实现。
- 算法的
有穷性
是指:算法程序的运行时间是有限的。
确定性
:算法中每一条指令必须有确切的含义,滴着理解时不会产生二义性。
可行性
:一个算法是可行的,即算法总描述的操作都是可以通过已经实现的基本运算执行有限次来实现。【也称有效性】
输入
:一个算法有零个或者多个输入,这些输入取自某个特定的对象的集合。
输出
:一个算法有一个或者多个输出,这些输出是同输入有着某种特定关系的量。
算法分析的两个主要方面:时间复杂度和空间复杂度
。【正确性和简洁性、可读性和可运行性是从软件工程角度要求系统实现的目标】 - 算法原地工作是指
需要常数个辅助空间
【需要的辅助空间个数与问题规模n无关】
同一个算法,实现语言的级别越低
,执行效率越高。
在相同的问题规模n下,复杂度为O(n)的算法在时间上总是
优于复杂度为O(n^2)的算法。
时间复杂度是指最坏情况下
估算算法执行时间的一个上界
。 - 下列关于算法的描述错误的是:
- 算法必须是正确的
- 算法必须能够结束
- 一个问题可以有多种算法解决
- 算法的某些步骤可以有二义性
- 计算机算法是指解决问题的
步骤序列
。 - 以比较为基础的排序算法,在最坏情况下的时间复杂度的下届为
O(nlog2(n))
。 - Fibonacci数列的递归计算:F(0)=0;F(1)=1;F(n)=F(n-1)+F(n-2),该递归函数的时间复杂度为
O(2^n)
。
每次n减小1,一共需进行n次。因此时间复杂度为O(2^n),速度慢是因为其系数在指数变大。
- 时间复杂度为O(1)的含义:
执行时间与问题规模无关
。
线性表
- 若线性表最常用的操作是存取第i个元素及其前驱和后继元素的值,为了提高效率,应采用
顺序表
的存储方式。【顺序表可以随机存取】 - 向一个有127个元素的顺序表中插入一个新元素并保持原来的顺序不变,并需要移动
63.5
个元素。
若是平均要移动的个数为
n/2
,插入末尾,移动0
个元素,插入表首移n
个元素。
平均移动元素数:127/2=63.5
个
- 单链表中访问当前节点的直接后继节点的时间复杂度
O(1)