二级公共基础

上传人:飞*** 文档编号:3118980 上传时间:2017-07-30 格式:DOC 页数:10 大小:102.50KB
返回 下载 相关 举报
二级公共基础_第1页
第1页 / 共10页
二级公共基础_第2页
第2页 / 共10页
二级公共基础_第3页
第3页 / 共10页
二级公共基础_第4页
第4页 / 共10页
二级公共基础_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《二级公共基础》由会员分享,可在线阅读,更多相关《二级公共基础(10页珍藏版)》请在金锄头文库上搜索。

1、第一章 数据结构与算法算法的复杂度(1) ,算法的基本概念利用计算机算法为计算机解题的过程实际上是在实施某种算法。1, 算法的基本特征有穷性:一个算法必须(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有限时间内完成,即运行时间是有限的;确定性:算法中每一条指令必须有确切的含义,理解时不会产生歧义;可行性:能够实现算法中描述的操作输入:一个算法有零个或多个输入输出:一个算法有一个或多个输出(至少有一个)2, 算法的基本运算和操作算法的基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输3, 算法的 3 种基本控制结构算法的 3 种基本控制结构是:顺序结构、选择结构、循环结构。4

2、, 算法基本设计方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。5, 指令系统指令系统指的是一个计算机系统能执行的所有指令的集合。(2)算法复杂度算法复杂度包括时间复杂度和空间复杂度。时间复杂度是指执行算法所需要的计算工作量。空间复杂度是指执行这个算法所需要的内存空间。数据结构数据元素是数据的基本单位。构成数据元素的不可分割的最小单位是数据项。数据结构分为逻辑结构和存储结构;常用的存储结构:顺序的存储结构和链式的存储结构。从逻辑关系上讲,数据结构主要分为:集合,线性结构、树结构、图结构。线性表的顺序存储结构是一种随机存取的存储结构,线性表的链式存储结构是一种顺序存取的存储结构。线性表是

3、零个或多个具有相同类型的数据元素的有限序列,除了第一个元素和最后一个元素,每个元素都有唯一的前驱和后继。在一个线性结构中插入或删除一个结点还是一个线性结构。栈、队列、串等都是线性结构。如果一个数据结构不是线性结构,则称之为非线性结构。数组、广义表、树和图等数据结构都是非线性结构。线性表中所有元素所占的存储结构具有以下两个基本特点: 线性表中所有元素所占的存储空间是连续的;、 线性表中各数据元素在空间中是按逻辑顺序依次存放的。顺序表的运算有查找、插入、删除 3 种栈栈的基本概念栈是一种特殊的线性表,是限定只在一端进行插入与删除的线性表。在栈中,一端是封闭的,既不允许进行插入元素,也不允许删除元素

4、;另一端是开口的,允许插入和删除元素。通常称插入、删除的这一端为栈顶,另一端为栈底。当表中没有元素时称为空栈。栈顶元素总是最后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈是按照“先进后出”的原则组织数据的。例如:枪械的子弹匣就可以用来形象的表示栈结构。子弹匣的一端是完全封闭的,最后被压入弹匣的子弹总是最先被弹出,而最先被压入的子弹最后才能被弹出。栈的基本运算:栈的基本运算有 3 种:入栈、出栈、读栈顶元素。队列队列的基本概念队列是只允许在一端进行删除,在另一端进行插入的顺序表,通常将允许删除的这一端称为队头,允许插入的这一端称为队尾。当

5、表中没有元素时称为空队列。队列的修改是依照“先进先出”的原则进行的,因此队列也称为先进先出的线性表或者后进后出的线性表。例如:火车进遂道,最先进遂道的是火车头,最后是火车尾,而火车出遂道的时候也是火车头先出最后是火车尾。队列运算入队运算是往队列尾插入一个数据元素;出队运算是从队列的队头删除一个数据元素。链表在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点。链式存储方式既可用于表示线性结构,也可用于表示非线性结构。在线性链表中,各数据元素结点的存储空间可以是不连续的,且各数据元素的存储顺

6、序与逻辑顺序可以不一致。在线性链表中进行插入与删除,不需要移动链表中的元素。双项链表:每个结点有三个部分组成:第一部分左指针(用以指向其前件结点) ,第二部分数据域(用于存放数据元素 ),第三部分右指针域(用以指向后件结点)。二叉树二叉树的基本概念二叉树具有的两个特点: 非空二叉树只有一个根结点; 每一个结点最多有两棵子树,且分别称为该结点的左子树和右子树。在二叉树中,每一个结点的度最大为 2,即所有子树也均为二叉树。另外,二叉树中的每个结点的子树被明显地分为左子树和右子树。一个结点可以只有左子树而没有右子树,也可以只有右子树而没有左子树。当一个结点既没有左子树也没有右子树时,该结点即为叶子结

7、点。 二叉树的基本概念父结点(根) 在树结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点,简称树的根。如上图:结点 A 是树的根结点子结点和叶子结点在树结构中,每一个结点可以有多个后件,称为该结点的子结点。没有后件的结点称为叶子结点。结点 D、E、F 均为叶子结点度 在树结构中,一个结点所拥有的后件的个数称为该结点的度,所有结点中最大的度称为树的度。上图:根结点 A 和结点 B 的度为 2,结点 C 的度为 1,叶子结点 D,E,F 的度为 0。所以,该树的度为 2。深度 树的最大层次称为树的深度。根结点 A 在第 1 层,结点 B,C 在第 2 层,结点 D

8、,E,F 在第 3 层。该树的深度为 3。子树 在树中,以某结点的一个子结点为根构成的树称为该结点的一棵子树二叉树的基本性质:性质 1:在二叉树的第 K 层上,最多有 2k-1(k=1)个结点。性质 2:深度为 m 的二叉树最多有 2m-1 个结点。性质 3:在任意一棵二叉树中,度为 0 的结点(即叶子结点)总是比度为 2 的结点多一个。性质 4:具有 n 个结点的二叉树,其深度至少为log2n+1,其中 log2n表示取 log2n 的整数部分。满二叉树与完全二叉树满二叉树是指除最后一层外,每一层上的所有结点都有两个子结点。在满二叉树中,每一层上的结点数都达到最大值,即在满二叉树的第 k 层

9、上有 2k-1 个结点,且深度为 m 的满二叉树有 2m-1 个结点。完全二叉树是指除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。完全二叉树具有以下两个性质:性质 1:具有 n 个结点的完全二叉树的深度为log2n+1.性质 2:设完全二叉树共有 n 个结点。如果从根结点开始,按层次(每一层从左到右)用自然数 1,2,n 给结点进行编号,则对于编号为 k(k=1,2, ,n)的结点有以下结论: 若 k=1,则该结点为根结点,它没有父结点;若 k1,则该结点的父结点编号为int(k/2); 若 2k=n,则编号为 k 的结点的左子结点编号为 2k;否则该结点无左子

10、结点(显然也没有右子结点) ; 若 2k+1=n,则编号为 k 的结点的右子结点编号为 2k+1;否则该结点无右子结点。二叉树的遍历:二叉树的遍历分为三类:前序遍历、中序遍历、后序遍历前序遍历:先访问根结点,然后遍历左子树,最后遍历右子树;并且在遍历左右子树时,仍需先访问根结点,然后遍历左子树,最后遍历右子树。如上图前序遍历的结果为:A,B,D,E,C,F中序遍历:先遍历左子树、然后访问根结点,最后遍历右子树;并且,在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。上图中序遍历的结果为:D,B,E,A,C,F后序遍历:先遍历左子树、然后遍历右子树,最后访问根结点。上图后序遍

11、历的结果为:D,E,B,F,C,A查找顺序查找查找是指在一个给定的数据结构中查找某个指定的元素。从线性表的第一个元素开始,依次将线性表中的元素与被查找的元素相比较,若相等则表示查找成功;若线性表中所有的元素都与被查找元素进行了比较但都不相等,则表示查找失败。在下列两种情况下也只能采用顺序查找: 如果线性表为无序表,则不管是顺序存储结构还是链式存储结构,只能用顺序查找; 即使是有序线性表,如果采用链式存储结构,也只能用顺序查找。二分法查找二分法查找,也称拆半查找,是一种高效的查找方法。能使用二分法查找的线性表必须满足用顺序存储结构和线性表是有序表两个条件。对于长度为 n 的有序线性表,利用二分法

12、查找元素 X 的过程如下:步骤 1:将 X 与线性表的中间项比较;步骤 2:如果 X 的值与中间项的值相等,则查找成功,结束查找;步骤 3:如果 X 小于中间项的值,则在线性表的前半部分以二分法继续查找;步骤 4:如果 X 大于中间项的值,则在线性表的后半部分以二分法继续查找;例如:长度为 8 的线性表关键码序列为:6,13,27,30,38,46,47,70,被查元素为 38,首先将与线性表的中间项比较,即与第 4 个数据元素 30 相比较,38 大于中间项30 的值,则在线性表38,46,47,70中继续查找;接着与中间项比较,即与第 2 个元素46 相比较,38 小于 46,则在线性表3

13、8中继续查找,最后一次比较相等,查找成功。顺序查找法每一次比较,只将查找范围减少 1,而二分法查找,每比较一次,可将查找范围减少为原来的一半,效率大大提高。对于长度为 n 的有序线性表,在最坏情况下,二分法查找只需比较 log2n 次,而顺序查找需要比较 n 次。排序交换类排序法冒泡排序法首先,从表头开始往后扫描线性表,逐次比较相邻两个元素的大小,若前面的元素大于后面的元素,则将它们互换,不断地将两个相邻元素中的大者往后移动,最后最大者到了线性表的最后。在最坏的情况下,冒泡排序需要比较次数为 n(n-1)/2快速排序法任取待排序序列中的某个元素作为基准(一般取第一个元素) ,通过一次排序,将待

14、排元素分为左右两个子序列,左子序列元素的排序码均小于或等于基准元素的排序码,右子序列的排序码则大于基准元素的排序码,然后分别对两个子序列继续进行排序,直至整个序列有序。 简单插入排序法,最坏情况需要 n(n-1)/2 次比较; 希尔排序法,最坏情况需要 O(n1.5)次比较。 简单选择排序法,最坏情况需要 n(n-1)/2 次比较; 堆排序法,最坏情况需要 O(nlog2n)次比较。相比以上几种,堆排序法的时间复杂度最小。第二章 程序设计基础程序设计的方法与风格养成良好的程序设计风格,主要考虑以下因素:源程序文档化 符号名的命名:符号名的命名应具有一定的实际含义,以便于对程序功能的理解; 程序

15、注释:在源程序中添加正确的注释可帮助人们理解程序。程序注释可分为序言性注释和功能性注释。语句结构清晰第一、效率第二; 视觉组织:通过在程序中添加一些空格、空行和缩进等,使人们在视觉上对程序的结构一目了然。结构化程序设计结构化程序设计方法引入了工程思想和结构化思想,使大型软件的开发和编程得到了极大的改善。结构化程序设计方法的主要原则为:自顶向下、逐步求精、模块化和限制使用 goto 语句。 自顶向上:先考虑整体,再考虑细节;先考虑全局目标,再考虑局部目标; 逐步求精:对复杂问题应设计一些子目标作为过渡,逐步细化; 模块化:把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标

16、称为一个模块。限制使用 goto 语句:在程序开发过程中要限制使用 goto 语句。结构化程序的基本结构结构化程序的基本结构有三种类型:顺序结构、选择结构和循环结构。 顺序结构:是最基本、最普通的结构形式,按照程序中的语句行的先后顺序逐条执行。 选择结构:又称为分支结构,它包括简单选择和多分支选择结构; 循环结构:根据给定的条件,判断是否要重复执行某一相同的或类似的程序段。循环结构对应两类循环语句:先判断后执行的循环体称为当型循环结构;先执行循环体后判断的称为直到型循环结构。面向对象方法面向对象方法涵盖对象及对象属性与方法、类、继承、多态性几个基本要素。1,对象通常把对象的操作也称为方法或服务。属性即对象所包含的信息,它在设计对象时确定,一般只能通过执行对象的操作来改变。属性值应该指的是纯粹的数据值,而不能指对象。操作描述了对象执行的功能,若通过信息的传递,还可以为其他对象使用。对象具有以下特征:标识惟一性、分类性、多

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号