数据结构复习题集(上).ppt
《数据结构复习题集(上).ppt》由会员分享,可在线阅读,更多相关《数据结构复习题集(上).ppt(43页珍藏版)》请在第壹文秘上搜索。
1、数据结构习题集第一二章重要概念:数据结构相关定义:数据结构=数据+结构 记作 Data_Structure=(D,S)其中, Data_Structure是数据结构的名称。D是数据元素的有限集合(一般为一个数据对象)S是D上关系的有限集.几个相关名词:存储结构 逻辑结构 现实中任何一个问题都可以定义为一个数据类型-称为抽象数据类型抽象数据类型Abstract Data Type ADT一个数学模型及定义在这个模型上的一组操作(或运算)的总称.抽象数据类型定义 抽象数据类型=数学模型+操作=数据结构+操作描述如下:ADT 抽象数据类型的名称 数据对象 数据关系 基本操作ADT抽象数据类型名时间复
2、杂度(空间复杂度雷同)通常选择对特定问题的最基本操作作为原操作,以原操作执行次数即语句频度作为算法的时间度量T(n)。算法分析一般步骤:1.计算出算法的各个语句的频度2.统计出算法的语句频度和T(n)3.给出T(n)的大O表示称为算法的时间复杂度T(n)=O(f(n)常见的时间复杂度,按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n2)、立方阶O(n3)、k次方阶O(nk)、指数阶O(2n)。第一二章习题1数据结构在计算机中的表示称为数据的(存储结构)。2数据结构是相互之间存在一种或多种特定关系的数据元素的集合.3数据结
3、构在计算机中存储器内表示时,物理地址和逻辑地址相同并且是连续的,称之为(顺序存储结构)。4. 定义一个整数序列的ADT 需要记住此整数序列需要支持元素的位置概念。Integers数据对象:D = ci|ci DO DO = INT i = 1,2, n n=0 数据关系:R NN = | ci-1 , ci D0 i = 2,3, ,n 基本操作:void clear(); void insert(int); void remove(int); void sizeof(); bool isEmpty(); bool isInSet(int); 5. 写出下列代码段的平均时间复杂度。假定其中的所
4、有变量都是整型。 (a) a = b + c; d = a + e; (b) sum = 0; for (i=0; i3; i+) for (j=0; jn; j+) sum+; (c) sum=0; for (i=0; in*n; i+) sum+; (d) for (i=0; i n-1; i+) for (j=i+1; j n; j+) tmp = Aij; Aij = Aji; Aji = tmp; (e) sum = 0; for (i=1; i=n; i+) for (j=1; j=n; j*=2) sum+; (f) sum = 0; for (i=1; i=n; i*=2) f
5、or (j=1; j=n; j+) sum+; T(n) =O( f(2) = O(1);常数阶时间复杂度 T(n) =O( f(n-1)*(n)/2) = O(n2); T(n) =O( f(3n) = O(n); 1阶时间复杂度T(n) =O( f(n*log2n) = O(n*logn);T(n) =O( f(log2n*n) = O(logn*n);T(n) =O( f(n2) = O(n2); 2阶时间复杂度 (g)Assume that array A contains values, Random takes constant time, and sort takes steps
6、. for (i=0; in; i+) for (j=0; jn; j+) Aj = Random(n); sort(A, n); (h)Assume array A contains random permutation of the values from 0 to n-1 sum = 0; for (i=0; in; i+) for (j=0; Aj!=i; j+) sum+; (i) sum = 0; if (EVEN(n) /EVEN(n)判断元素是否为偶数 for (i=0; i 1) if (ODD(n) n = 3 * n + 1; else n = n / 2; T(n) =
7、O( f(n*(n-1)/2) = O(n2);T(n) =O( f(n*n*log2n) = O(n2logn);T(n) =O( f(n+1)/2) = O(n);下限是(log n),没有上限。(只有当n=2x时,此段代码执行次数最少,执行的次数为log2n)7.(代码题)输入三个数x,y,z 按照从小到大顺序输出将输入的三个数作为数组元素进行冒泡排序void main() int num=3; printf(Input three number:n); int anum,temp,i,j; for(i=0;inum;i+) scanf(%d,&ai); for(i=0;inum-1;i
8、+) for(j=i+1;jaj) temp=ai; ai=aj;aj=temp; for(i=0;i=0)个数据元素的有限序列。一般表示为L=(a1,a2,ai,an)注意:线性表是一种逻辑结构,表示元素之间一对一的相邻关系,下面说的两种实现方式是指他们的存储结构。线性表的两种实现方式:顺序表 :顺序存储的线性表又称为顺序表,是使用一组地址连续的存储单元,依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理地址上也相邻。链表:通过一组任意的存储单元来存储线性表中的数据元素,每一个链表结点,除了存放元素自身信息还需要存放指向其后继的指针。第三章习题1在下列序列中,不是线性表的是(a,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 复习题
