第一章 概论
基本概念和术语
-
数据是信息的载体
-
数据元素是数据的基本单位
-
数据项是数据的最小单位
-
数据对象是具有相同性质的数据元素的集合
-
数据结构是相互之间存在一种或多种特定关系的数据元素的集合
-
数据结构包括三方面的内容:逻辑结构、物理结构和数据的运算
-
逻辑结构是数据元素之间的逻辑关系,与存储无关,是独立于计算机的
-
存储结构是数据结构在计算机中的表示,它包括数据元素的定义和数据关系的表示
-
数据的逻辑结构:线性结构和非线性结构
或集合、线性结构、树型结构、图或网状结构 -
数据的存储结构:顺序存储、链式存储、索引存储和散列存储
-
算法的五个特性:有穷性、确定性、可行性、输入、输出
-
一个算法应该是问题求解步骤的描述
1.以下与数据的存储结构无关的术语是
A.循环队列 B.链表 C.哈希表 D.栈
2.以下数据结构中,哪一个是线性结构
A.广义表 B.二叉树 C.稀疏矩阵 D.串
3.以下属于逻辑结构的是
A.顺序表 B.哈希表 C.有序表 D.单链表
4.设计一个“好”的算法,应考虑达到的目标是
A.可行的 B.健壮的 C.无二义性的 D.可读性好的
5.数据结构与数据类型的形式定义分别为:
Data-Structure=(D,R),
Data-Type=(D,R,P)
试选择D,R,P的确切含义。
a)数据
b)数据元素
c)数据对象
d)关系
e)存储结构
f)基本操作
-------------------------------------------------------------
1.循环队列代表顺序存储
链表代表链式存储
哈希表代表散列存储
2.广义表是线性表的推广,不是线性结构
常用的线性结构有:线性表,栈,队列,双队列,数组,串
常见的非线性结构有:二维数组,多维数组,广义表,树,图
3.顺序表是线性表的顺序存储结构,单链表是线性表的链式存储结构,都属于线性表的存储结构
有序表是指该表保存的数据元素的关键字之间是有序的,
这说明的是数据元素之间的逻辑关系,因此是逻辑结构
4.一个算法的优劣应该从以下几方面来评价:
正确性、可读性好、健壮性、高效性
不能把算法的五个特征混淆成“好”算法应达到的目标
5.数据结构是具有一种或多种特定关系的数据元素的集合
逻辑结构包括数据元素的定义和关系的表示
时间复杂度
1.时间复杂度
x=2;
while(x<n/2)
x=x*2;
2.时间复杂度
for(int i=0;i<=n;i=i*2)
for(int j=0;j<n;j++)
.....
3.在相同的时间规模下,O(n)的算法总是优于O(2^n)的算法
4.下述函数中渐近时间最小的是
A.T1(n)=nlog2n+1000log2n
B.T2(n)=nlog23-1000log2n
C.T3(n)= n²-1000log2n
D.T4(n)=2nlog2n-1000log2n
5.时间复杂度
for(int i=0;i<n-1;i++)
for(int j=n;j>=i;j--)
s;
6.时间复杂度
i=1;
while(i<=n)
i=i*3;
--------------------------------------------------------
1.第i个循环完毕,x=2^(i+1),设x=n/2,→i+2=log2n
成倍增加的,都会与log有关
2.内存循环,执行n次
外层循环,成倍增加,与log有关
4.O(log n) < O(n) < O(nlog n) < O(n²) < O(2^n) < O(n!)
就是算时间复杂度,取大头
A.nlogn B.n C.n² D.nlogn
5.外层循环 1....n-2 共n-2次
内层循环 n~1 n次 ....n~n-2 3次
(n-2)*(n+3)/2
6.成倍增加,log2n
一开始我写的是log3n,搜索了一下发现,底数不重要