公共基础复习笔记.ppt_第1页
公共基础复习笔记.ppt_第2页
公共基础复习笔记.ppt_第3页
公共基础复习笔记.ppt_第4页
公共基础复习笔记.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 数据结构与算法,1.1 算法的复杂度 算法:利用计算机算法为计算机解题的过程实际上是实施某种算法。 算法的4个基本特征:可行性、确定性、有穷性、拥有足够的情报。 算法的基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 算法的3种基本控制结构是:顺序结构、选择结构、循环结构。,算法基本设计方法:列举法、归纳 法、递推、递归、减半递推技术、回溯法。,指令系统:是指一个计算机系统能执行的所有指令的集合。 算法的复杂度包括时间复杂度和空间复杂度。 时间复杂度:执行算法所需要的计算工作量。 空间复杂度:执行这个算法所需要的内存空间。,1.2数据结构,1.2.1 逻辑结构和存储结构 数据结构的基本概念 (1)数据结构:指相互有关联的数据元素的集合。 (2)数据结构研究的3个方面(数据的逻辑结构、数据的存储结构、对各种数据结构进行的运算) 2.逻辑结构 3.存储结构,1.2.2线性结构和非线性结构,根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。 (1)如果一个非空的数据结构满足下列两个条件: a.有且只有一个根结点; b. 每一个结点最多有一个前件,也最多有一个后件。 则称该数据结构为线性结构。线性结构又称线性表。在一个线性结构中插入或删除任何一个结点后还应是线性结构。栈、队列、串等都为线性结构。,如果一个数据结构不是线性结构,则称之为非线性结构。如数组、广义表、树和图等都是,(2)线性表的顺序存储结构具有以下两个基本特点; a线性表中所有元素所占的存储空间是连续的; b线性表中各数据元素在存储空间中是按 逻辑顺序依次存放的。 (3)顺序表的运算有查找、插入、删除3种。,1.3 栈,1.栈的基本概念 栈:是一种特殊的线性表,是限定只在一端另进行插入与删除的线性表。 在栈中,一端是封闭的,既不允许进行插入元素,也不允许删除元素;另一端是开口的,允许插入和删除元素。通常称插入、删除的这一端为栈顶,一端为栈底。当表中没有元素是称为空栈。栈顶元素总是最后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。,1.3栈,栈是按照”先进后出”或 ”后进先出”的原则组织数据的。 2. 栈的顺序存储及其运算 栈的基本运算有三种:入栈、退栈与读栈顶元素 A 入栈运算:在栈顶位置插入一个新元素: B退栈运算:取出栈顶元素赋并给一个指定的变量; C读栈顶元素:将栈顶元素赋给一个指定的变量。,1.4 队列,1. 队列的基本概念 队列是只允许在一端进行删除,在另一端进行插入的顺序表,通常将允许删除的这一端称为队头,允许插入的这一端称为队尾。当表中没有元素时称为空队列。 队列的修改是依照先进先出的原则进行的,因此队列也称为先进先出的线性表,或者后进后出的线性表。,1.4 队列,队列又称”先进先出”(First In First Out简称FIFO)或”后进后出”(Last In Last Out简称LILO)的线性表。 2.队列运算 如对运算是往队列队尾插入一个数据元素;退队运算是从队列的队头删除一个数据元素。 队列的顺序存储结构一般采用队列循环的形式。循环队列s=0 表示空队列;,队列,S=1且 front=rear 表示队列满。计算循环队列的元素个数:”尾指针减头指针”,若为负数,再加其容量即可。,在链式存储方式中,要求每个结点有两部分组成;一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。 链式存储方式既可用于表示线性结构,也可用于表示非线性结构。,1.5链表,1.5 链表,(1)线性链表 线性表的链式存储结构称为线性链表。 在某些应用中,对线性链表中的每个结点设置两个指针,一个称为左指针,用以指向其前件结点;另一个称为右指针,用以指向其后件结点。这样的表称为双向链表。 在线性链表中,各数据元素结点的存储空间可以是不连续的,且各数据元素的存储顺序与逻辑顺序可以不一致。在线性链表中进行插入与删除,不需要移动链表中的元素。,1.5 链表,线性单链表中,HEAD称为头指针,HEAD=NULL(或0)称为空表。 如果是双向链表的两指针:左指针(Llink)指向前件结点,右指针(Rlink)指向后件结点 线性链表的基本运算:查找、插入、删除。 (2)带链的栈 栈也是线性表,也可以采用链式存储结构。带链的栈可以用来收集计算机存储空间中的所有空闲的存储结点,这种带链的栈称为可利用栈。,1.6 二叉树,1.6.1 二叉树概念及其基本性质 1. 二叉树及其基本概念 二叉树是一种很有用的非线性结构,具有以下两个特点: A非空二叉树只有一个根结点; B每一个结点最多 有两棵子树,且分别称为该结点的左子树和右子树。 在二叉树中,每一个结点的度最大为2,即所有子树(左子树或右子树)也均为二叉树。,另外,二叉树中每个结点的子树被明显地分为左子树和右子树。 在二叉树中,一个结点可以只有左子树而没有右子树也可以只有右子树而没有左子树。当一个结点既没有左子树也没有右子树时,该结点即为叶子结点。 2. 二叉树基本性质 二叉树具有以下几个性质: 性质1:在二叉树的第K层上,最多有2k-1(k=1)个结点。 性质2:深度为m 的二叉树最多有2m-1个结点,性棵质3. 在任意一棵二叉树的中,深度为0的结点(即叶子结点)总是比度为2的结点多一个。 性质4. 具有n个结点的二叉树,其深度至少为log2n表示取log2n的整数部分。 3. 满二叉树与完全二叉树 满二叉树是指这样的一种二叉树:除最后一层外,每一层的所有结点都有两个子结点。在满二叉树中,每一层上的所有结点数都达到最大值,即在满二叉树的第k层上有2K-1个结点,且深度为m的满二叉树有2m-1个结点。,二叉树,完全二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。 对于完全二叉树来说,叶子结点只可能在层次上最大的两层上出现;对于任何一个结点,若其右分支下的子孙结点的最大层次为p,则其左分支的子孙结点的最大层次或为p,或为p+1.,完全二叉树具有以下两个性质: 性质1. 具有n个结点的完全二叉树的深度为log2n+1. 性质2. 设完全二叉树共有n个结点。如果从根结点开始,按层次(每一层从左到右)用自然数1,2,,n给结点进行编号为k(k=1,2,n)的结点有以下结论: A. 若k=1,则该结点为根结点,它没有父结点;若k1,则该结点的父结点编号为INT(k/2),B. 若2k=n,则编号为k的结点的左子结点编号为2K,否则该结点无左子结点(显然也没有右子结点); C. 若2k+1=n,则编号为k的右子结点编号为2k+1;否则该结点无有子结点。 1.6.2二叉树的遍历 在遍历二叉树的过程中,一般先遍历左子树,再遍历右子树。在先左后右的原则下,根据访问根结点的次序,二叉树的遍历分为三类:前序遍历、中序遍历和后序遍历。 (1)前序遍历(根左右) (2)中序遍历(左根右) (3)后序遍历(左右根),1.7 查找,1.7.1 顺序查找 查找是指在一个给定的数据结构中查找某个指定的元素。从线性表的第一个元素开始,一次将线性表中的元素与被查找的元素相比较,若相等则表示查找成功;若线性表中所有的元素都与被查找元素进行了比较但都不相等。则表示查找失败。,1.7 顺序查找,只能用顺序查找: A如果线性表 为无序表,则不管是顺序存储结构还是链式存储结构,只能用查找; B即使是有序线性表,如果采用链式存储结构,也只能用顺序查找。 1.7.2二分查找 二分查找,也称拆半查找,是一种高效的查找法。能使用二分查找的线性表必须满足用顺序存储结构和线性表是有序表两个条件。,1.8 排序,1、交换类排序法 (1)冒泡排序法 首先,从表头开始往后扫描线性表、逐次比较相邻两个元素的大小,若前面的元素大于后面的元素,则将他们互换,将两个相邻元素的达者往后移动,最后最大者到了线性表的最后。 然后,从后到前扫描剩下的线性表,逐次比较相邻两个元素的大小,若后面的元素小于前面的元素,则将他们互换,不断地将两个相邻元素的不断地小者往前移动,最后最小者到了线性表的最前面。,对剩下的线性表重复上述过程,直到剩下的线性表变空为止,此时已经排好序。 最坏的情况下,冒泡排序需要比较次数为n(n-1)/2. (2)快速排序法 在任取待排序序列中的某个元素作为基准(一般取第一个元素),通过一次排序,将待排元素分为左右两个子序列,左子序列元素的排序码均小于或等于基准元素的排序码,右子序列的排序码则大于基准元素的排序码,然后分别对两个子序列继续进行排序,直至整个序列有序。,2. 插入类排序法 A 简单插入排序法,最坏情况需要n(n-1)/2次比较; B 希尔排序法,最坏情况需要O(n1.5)次比较。 相比以上几种(除希尔排序法外),堆排序的时间复杂度最小。,第二章 程序设计基础,2.1程序设计的方法与风格 养成良好地程序设计风格,主要考虑下述因素: (1)源程序文档化 A程序注释b 符号名的命名c 数据组织 (2)数据说明的方法 (3)语句的结构程序 (4)输入与输出,2.2 结构化程序设计,1. 结构化程序设计的原则 结构化程序设计方法引入了工程思想和结构化思想,使大型软件的开发和编程得到了极大地改善。结构化程序设计方法的主要原则:自顶向下、逐步求精、模块化和限制使用goto 语句。 2. 结构化程序的基本结构 A 结构化程序的基本结构有三种类型:顺序结构、选择结构和循环结构。,2.3 面向对象方法,面向对象方法涵盖对象及对象属性与方法、类、继承、多态性几个基本要素。 1. 对象 通常把对象的操作也称为方法或服务。 属性即对象所包含的信息,它在设计对象时确定,一般只能通过执行对象的操作来改变。属性值应该指的是纯粹的数据值,而不能指对象。 操作描述了对象执行的功能,若通过信息的传递,还可以为其他对象使用。 对象具有如下特征:标识唯一性、分类性、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论