版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、传智播客C和C+与数据结构基础讲义传智播客C和C+与数据结构基础讲义 传智扫地僧1、 数据结构概念数据结构相关概念疑惑1、我学完了C语言,可是现在感觉还是写不出代码。2、为什么会有各种各样的程序存在?3、程序的本质是什么?程序是为了具体问题而存在的 程序需要围绕问题的解决进行设计同一个问题可以有多种解决方案如何追求程序的“性价比”是否有可量化的方法判别程序的好坏?数据结构起源计算机从解决数值计算问题到解决生活中的问题现实生活中的问题涉及不同个体间的复杂联系需要在计算机程序中描述生活中个体间的联系数据结构主要研究非数值计算程序问题中的操作对象以及它们之间的关系 不是研究复杂的算法数据结构中的基本
2、概念数据 程序的操作对象,用于描述客观事物 (int a, int b,)数据的特点:可以输入到计算机可以被计算机程序处理数据是一个抽象的概念,将其进行分类后得到程序设计语言中的类型。如:int,float,char等等数据元素:组成数据的基本单位数据项:一个数据元素由若干数据项组成数据对象 性质相同的数据元素的集合 (比如:数组,链表) 级中同学的友谊关系 N:NB.公司中的上下级关系 1:NC.冬天图书馆排队占座关系 D.花名册上名字之间的关系 1:1线性表的操作创建线性表销毁线性表清空线性表将元素插入线性表将元素从线性表中删除获取线性表中某个位置的元素获取线性表的长度线性表在程序中表现为
3、一种特殊的数据类型线性表的操作在程序中的表现为一组函数C语言描述=线性表的设计与实现ADT抽象层 数据结构(C语言版).严蔚敏_吴伟民.扫描版.pdf p44页 人生财富库积累#ifndef _WBM_LIST_H_#define _WBM_LIST_H_typedef void List;typedef void ListNode;蔚敏_吴伟民.扫描版.pdf p124 数据结构数据:数据结构(C语言版).严蔚敏_吴伟民.扫描版.pdf p127 性质4: 具有n个结点的完全二叉树的深度必为ëlog2nû1性质5: 对完全二叉树,若从上至下、从左至右编号,则编号为i 的结
4、点,其左孩子编号必为2i,其右孩子编号必为2i1;其双亲的编号必为i/2(i1 时为根,除外)二叉树的存储结构一、顺序存储结构按二叉树的结点“自上而下、从左至右”编号,用一组连续的存储单元存储。答:一律转为完全二叉树!讨论:不是完全二叉树怎么办?方法很简单,将各层空缺处统统补上“虚结点”,其内容为空二、链式存储结构二叉树的表示二叉树表示法P127页/*typedef struct BiTNodeintdata; struct BiTNode *lchild, *rchild;BiTNode, *BiTree;*/struct BiTNodeintdata;struct BiTNode *lch
5、ild, *rchild;typedef struct BiTNode BiTNode;typedef struct BiTNode * BiTree;树的三叉链表表示定n个数值 v1, v2, , vn2.根据这n个数值构造二叉树集合FF = T1, T2, , TnTi的数据域为vi,左右子树为空3.在F中选取两棵根结点的值最小的树作为左右子树构造一棵新的二叉树,这棵二叉树的根结点中的值为左右子树根结点中的值之和4.在F中删除这两棵子树,并将构造的新二叉树加入F中5.重复3和4,直到F中只剩下一个树为止。这棵树即霍夫曼树假设经过统计ABCDEF在需要传输的报文中出现的概率如下霍夫曼树是一种
6、特殊的二叉树 霍夫曼树应用于信息编码和数据压缩领域 霍夫曼树是现代压缩算法的基础 5、排序 排序基本概念现实生活中排序很重要算法已写好代码复用 & 和我们需要学习前辈们的经验 不矛盾,也不代表我们不需要不学习。排序是计算机内经常进行的一种操作,其目的是将一组“无序”的数据元素调整为“有序”的数据元素。排序数学定义:假设含n个数据元素的序列为 R1, R2, , Rn其相应的关键字序列为 K1, K2, , Kn这些关键字相互之间可以进行比较,即在它们之间存在着这样一个关系 :Kp1Kp2Kpn按此固有关系将上式记录序列重新排列为 Rp1, Rp2, ,Rpn的操作称作排序 排序的稳定性
7、如果在序列中有两个数据元素ri和rj,它们的关键字ki = k j,且在排序之前,对象ri排在rj前面。如果在排序之后,对象ri仍在rj前面,则称这个排序方法是稳定的;否则称这个排序方法是不稳定的。多关键字排序排序时需要比较的关键字多余一个排序结果首先按关键字1进行排序当关键字1相同时按关键字2进行排序当关键字n-1相同时按关键字n进行排序对于多关键字排序,只需要在比较操作时同时考虑多个关键字即可!排序中的关键操作比较任意两个数据元素通过比较操作确定先后次序交换数据元素之间需要交换才能得到预期结果内排序和外排序内排序整个排序过程不需要访问外存便能完成 外排序待排序的数据元素数量很大,整个序列的
8、排序过程不可能在内存中完成排序的审判时间性能关键性能差异体现在比较和交换的数量 辅助存储空间为完成排序操作需要的额外的存储空间 必要时可以“空间换时间”算法的实现复杂性过于复杂的排序法会影响代码的可读性和可维护性,也可能影响排序的性能总结排序是数据元素从无序到有序的过程排序具有稳定性,是选择排序算法的因素之一比较和交换是排序的基本操作多关键字排序与单关键字排序无本质区别排序的时间性能是区分排序算法好坏的主要因素选择法基本思想每一趟 (例如第 i 趟,i = 0, 1, ,n-2)在后面 n-i个待排的数据元素中选出关键字最小的元素, 作为有序元素序列的第 i 个元素。排序过程 首先通过n-1次
9、关键字比较,从n个记录中找出关键字最小的记录,将它与第一个记录交换 再通过n-2次比较,从剩余的n-1个记录中找出关键字次小的记录,将它与第二个记录交换 重复上述操作,共进行n-1趟排序后,排序结束插入排序基本思想:元素1个元素,排序过程:整个排序过程为n-1趟插入,即先将序列中第1个记录看成是一个有序子序列,然后从第2个记录开始,逐个进行插入,直至整个序列有序实质:对线性表执行n-1次插入操作,只是先要找到插入位置V0, V1, , Vi-1已经排好序。这时已经排好序。这时,用Vi的关键字与Vi-1, Vi-2, 的关键字进行比较, 找到插入位置即将Vi插入, 原来位置上的对象向后顺移。插入
10、排序关键点:1、拿出一个元素,留出位置、2 符合条件的元素后移冒泡排序希尔排序排序过程:先取一个正整数d1<n,把所有相隔d1的记录放一组,组内进行直接插入排序;然后取d2<d1,重复上述分组和排序操作;直至di=1,即所有记录放进一个组中排序为止OQ(nlogn) 希尔排序是不稳定的。快速排序思想:快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,基准数据排在这两个子序列的中间;然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。m,Rm+1.high,先将它们合并到一个局部的暂存向量R1(相当于输出堆)中,待合并完成后将R1复制回Rlow.high中。 排序总结 6 C+模板类与数据结构基础前言C+模板是容器的概念。理论提高:所有容器提供的都是值(value)语意,而非引用(reference)语意。容器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医学检验技术培训要点分析
- 2026年广东金融学院单招综合素质笔试备考题库带答案解析
- 心脏病护理技术与方法探讨
- 护理护理专业发展前景与挑战
- 2026年贵州城市职业学院单招综合素质考试参考题库带答案解析
- 医院财务管理状况分析报告
- 2026年广西电力职业技术学院高职单招职业适应性测试参考题库有答案解析
- 财政预算审计课件
- 医疗互联网平台的数据安全与隐私保护
- 传染科防控措施总结
- 食品经营场所及设施设备清洗消毒和维修保养制度
- DB14T2163-2020 《信息化项目软件运维费用测算指南》
- 二氧化碳爆破施工技术方案
- 国考题库文件下载及答案详解(历年真题)
- 16《我的叔叔于勒》公开课一等奖创新教学设计
- 骨科备皮课件
- 商品有机肥施肥施工方案
- 职工代表知识培训内容课件
- 2025至2030中国酒店行业市场现状分析及有效策略与实施路径评估报告
- 黑龙江省安全文明施工费管理办法
- 浙江省杭州市萧山区2024-2025学年六年级上学期语文期末试卷
评论
0/150
提交评论