第1章 数结构算法
11算法
1算法基概念
(1)概念:算法指系列解决问题清晰指令
(2)4基特征:行性确定性穷性拥足够情报
(3)两种基素:数象运算操作算法控制结构(运算操作时问序)
(4)设计基方法:列举法纳法递推法递法减半递推技术回溯法
2算法复杂度
(1)算法时间复杂度:执行算法需计算工作量
(2)算法空间复杂度:执行算法需存空间
12数结构基概念
数结构指相互关联数元素集合数组织形式中逻辑结构反映数元素间逻辑关系存储结构数逻辑结构计算机存储空间中存放形式序存储链式存储索引存储散列存储4种方式
数结构元素间前件关系复杂度划分:
(1)线性结构:根节点节点直接前驱直接继非空数结构
(2)非线性结构:满足线性结构数结构
13线性表序存储结构
1线性表基概念
线性结构称线性表线性表简单常种数结构
2线性表序存储结构
•元素占存储空间必须连续
•元素存储空间位置逻辑序存放
3线性表插入运算
第i元素前插入新元素步骤:
步骤:原第n节点第i节点次移元素位置
步骤二:新节点放第i位置
步骤三:修正线性表节点数
坏情况插入元素第位置线性表中元素均需移动
4线性表删运算
删第i位置元素步骤:
步骤:第i元素包括第i元素ni元素次前移位置
步骤二:修正线性表结点数
14栈队列
1栈基运算
(1)基概念:栈种特殊线性表插入运算删运算线性表端进行称先进出表进先出表
•栈顶:允许插入删端
•栈底:栈顶端
•空栈:栈中没元素栈
(2)特点
•栈顶元素插入早删元素
•栈底元素早插入删元素
•栈记忆作
•序存储结构栈插入删运算需移动表中数元素
•栈顶指针top动态反映栈中元素变化情况
(3)序存储运算:入栈运算退栈运算读栈顶运算
2队列基运算
(1)基概念:队列指允许端进行插入端进行删线性表称先进先出线性表
•队尾:允许插入端尾指针指队尾元素
•排头:允许删端头指针指头元素前位置
(2)循环队列运算
谓循环队列队列存储空间位置绕第位置形成逻辑环状空间
入队运算指循环队列队尾加入新元素
循环队列非空(s1)队尾指针等队头指针时说明循环队列已满进行队运算种情况称溢
退队运算指循环队列队头位置退出元素赋指定变量首先队头指针进然排头指针指元素赋指定变量循环队列空(s0)时进行退队运算种情况称溢
15线性链表
定义链表中含指针域存放元素址称样链表单链表线性链表
链式存储方式中求结点两部分组成:部分存放数元素值称数域部分存放指针称指针域中指针指该结点前结点(前件件)
16树二叉树
1树基概念
树简单非线性结构树中仅没前驱节点称根余节点分成m互相交限集合T1T2…T}mm集合棵树称T1T2…T}mm根结点子树
•父节点:节点前件前件节点称树根结点(简称树根)
•子节点:~节点件件节点称叶子节点
•树度:节点度
•树深度:树层次
2二叉树定义基性质
(1)二叉树定义:二叉树种非线性结构限节点集合该集合空(空二叉树)根节点两棵互相交左右二叉子树组成分满二叉树完全二叉树中满二叉树定完全二叉树完全二叉树定满二叉树二叉树具两特点:
•二叉树空空二叉树节点非空二叉树根结点
•节点两棵子树称左子树右子树
(2)二叉树基性质
性质1:二叉树第k层2k1结点(k≥1)
性质2:深度m二叉树2m1结点
性质3:棵二叉树度0结点(叶子结点)总度2结点
性质4:具n结点完全二叉树深度少[log2n]+1中[log2n]表示log2n整数部分
3满二叉树完全二叉树
(1)满二叉树:满二叉树指样种二叉树:层外层结点两子结点满二叉树第i层2i1结点
面满二叉树定义知二叉树层结点数必须达否满二叉树深度m满二叉树2m1结点
(2)完全二叉树:完全二叉树指样二叉树:层外层结点数均达值层缺少右边干结点
果—棵具n结点深度k二叉树—结点深度k满二叉树中编号1~n结点——应
3二叉树存储结构
二叉树通常采链式存储结构存储节点数域指针域(左指针域右指针域)组成二叉树链式存储结构称二叉链表满二叉树完全二叉树层次进行序存储
4二叉树遍历
二叉树遍历指重复访问二叉树中节点指非空二叉树空二叉树结束返回二叉树遍历包括前序遍历中序遍历序遍历
(1)前序遍历
前序遍历指访问根结点遍历左子树遍历右子树三者中首先访问根结点然遍历左子树遍历右子树遍历左右子树时然先访问根结点然遍历左子树遍历右子树前序遍历描述:二叉树空执行空操作否①访问根结点②前序遍历左子树③前序遍历右子树
(2)中序遍历
中序遍历指访问根结点遍历左子树遍历右子树三者中首先遍历左子树然访问根结点遍历右子树遍历左右子树时然先遍历左子树然访问根结点遍历右子树中序遍历描述:二叉树空执行空操作否①中序遍历左子树②访问根结点③中序遍历右子树
(3)序遍历
序遍历指访问根结点遍历左子树遍历右子树三者中首先遍历左子树然遍历右子树访问根结点遍历左右子树时然先遍历左子树然遍历右子树访问根结点序遍历描述:二叉树空执行空操作否①序遍历左子树②序遍历右子树③访问根结点
17查找技术
(1)序查找:线性表中查找指定元素
(2)坏情况元素找元素需线性表中元素较较次数n
(2)二分查找:二分查找称折半查找种高效率查找方法二分查找条件限制求表必须序存储结构表中元素必须关键字序(升序降序均)排列长度n序线性表坏情况二分查找法需较log2n次
18排序技术
(1)交换类排序法
•泡排序:通排序序列前前次较相邻元素排序码发现逆序交换较元素逐渐前部移部较元素逐渐部移前部直元素序止坏情况长度n线性表排序泡排序需较次数n(n1)2
•快速排序:迄止排序算法中速度快种基思想:取排序序列中某元素作基准(般取第元素)通趟排序排元素分左右两子序列左子序列元索排序码均等基准元素排序码右子序列排序码基准元素排序码然分两子序列继续进行排序直整序列序坏情况次划分序列时间效率O(n2)
(2)插类排序法
•简单插入排序法:n排序元素成序表序表开始时序表中包含元素序表中包含n1元素排序程中次序表中取出第元素排序码次序表元素排序码进行较插入序表中适位置成新序表坏情况初始排序序列逆序情况较次数n(n1)2移动次数n(n1)2
•希尔排序法:先整排元素序列分割成干子序列(相隔某增量元素组成)分进行直接插入排序整序列中元素基序(增量足够)时全体元素进行次直接插入排序
(3)选择类排序法
•简单选择排序法:扫描整线性表中选出元素交换表前面然剩子表采样方法直子表空止坏情况需较n(n1)2次
•堆排序方法:首先序序列建成堆然堆顶元素(序列中项)堆中元素交换(项应该序列)考虑已换元素考虑前n1元素构成子序列该子序列调整堆反复做步骤②直剩子序列空止坏情况堆排序法需较次数0(nlog2n)
第2章 程序设计基础
21程序设计方法风格
(1)设计方法:指设计编制调试程序方法程结构化程序设计方法软件工程方法面象方法
(2)设计风格:良设计风格注重源程序文档化数说明方法语句结构输入输出
22结构化程序设计
1结构化程序设计原
结构化程序设计强调程序设计风格程序结构规范化提倡清晰结构
(1)顶:先考虑总体考虑细节先考虑全局目标考虑局部目标
(2)逐步求精:复杂问题应设计子目标做渡逐步细化
(3)模块化:程序解决总目标分解分目标进步分解具体目标目标称模块
(4)限制GOT0语句
2结构化程序基结构特点
(1)序结构:始终严格程序中语句先序逐条执行基普遍结构形式
(2)选择结构:称分支结构包括简单选择分支选择结构
(3)重复结构:称循环结构根定条件判断否需重复执行某相类似程序段
结构化程序设计中应注意事项:
(1)程序设计语言中序选择循环等限控制结构表示程序控制逻辑
(2)选控制结构准许口出口
(3)程序语言组成容易识块块入口出口
(4)复杂结构应该嵌套基控制结构进行组合嵌套实现
(5)语言中没控制结构应该采前致方法模拟
(6)量避免GOT0语句
23面象程序设计
面象方法质张客观世界固事物出发构造系统强调建立系统映射问题域
•象:表示客观世界中实体明确边界意义东西
•类:具属性方法象集合
•实例:具体象应分类实例
•消息:实例间传递信息统数流控制流
•继承:已类定义作基础建立新类定义技术
•态性:指象根接受信息作出动作样信息象接收时行动现象面象程序设计优点:类惯思维方法致稳定性重性易开发型软件产品维护性
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档