- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * 二叉排序树动态查找算法C++语言描述如下: BinNode* Search_ Insert (BinNodePtr p, KeyType key) { BinNode *pre=NULL; // 循环查找过程 while(p!=NULL p-x!=key ) { pre=p; // pre为结点p的父结点指针 if( keyp-x ) p=p-left; else p=p-right; } // 查找失败,插入新结点 ( 见下一页 ) * * (接上一页内容) if(p==NULL) { // 建立新结点 p=new BinNode; p-left =NULL; p-right=NULL; p-x=key; //新结点不是根,则作为叶子插入 if(pre!=NULL) { if(pre-x p-x) pre-left=p; //插入为左孩子 else pre-right=p; //插入为右孩子 } } return p; //返回找到的结点或插入的新结点的指针 } [例2-7]字符统计程序 [例2-7] 利用二叉排序树统计字符出现次数 该程序可统计由用户输入的一个字符串中各种字符的使用次数。 程序算法是:首先建立空的二叉排序树,每次读入字符后就在树表中查询,若找到则将该字符使用次数加一;否则,将读入的字符插入二叉排序树。 为记录字符使用次数,在二叉树结点定义中增加了使用次数属性。 读完整个字符串后用中序遍历法读出每个字符使用次数。 * 2.4.4排序的基本概念 排序是将一组同类型的记录序列调整为按照元素关键字有序的记录序列。 例如将学生记录按学号排序,将课程记录按课程编码排序。 排序的形式化定义为:假设含n个记录的序列为{ R1, R2,…,Rn },其相应的关键字序列为{ K1, K2,…,Kn }。这些关键字相互之间可以进行比较,即在它们之间存在着这样一个关系Kp1≤Kp2≤…≤Kpn,按此固有关系将最初的记录序列重新排列为{ Rp1, Rp2, …,Rpn }的操作称作排序。 * 排序分为内部排序和外部排序。 若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序; 反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。 本节只讨论内部排序的若干方法 * 内部排序方法有很多类型。 按方法实现特点可分为插入排序、选择排序、交换排序、归并排序等等; 按方法效率可分为简单的排序法、先进的排序法等等。简单的排序法包括插入排序、选择排序、冒泡排序等,它们的时间复杂度为O(n2)。而先进的排序法包括快速排序、归并排序等,它们的时间复杂度大约为O(nlog2n)。 * 显示在序列{35,22,16,19,22}上应用插入排序的过程,为了对序列中相同记录加以区别,使用了下划线。 * 初始状态: [35] 22 16 19 22 第1趟 : [22 35] 16 19 22 第2趟 : [16 22 35] 19 22 第3趟 : [16 19 22 35] 22 第4趟 : [16 19 22 22 35] 直接插入排序执行过程 1、直接插入排序 直接插入排序算法C++语言描述: void InsertSort( int v[ ], int n ) { int i, j, temp; for( i=1; in; i++ ) { temp = v[i]; //待插入数据 j=i; // j最终存放插入位置 while(j0 tempv[j-1]) { //从后向前依次比较,找到插入位置 v[j]=v[j-1]; j--; } v[j] = temp; //插入元素 } } * 在序列{35,22,16,19,22}上应用简单选择排序的过程。 初始状态: [35 22 16 19 22] ? 第1趟 : [16] [22 35 19 22] ? 第2趟 : [16 19] [35 22 22] ? 第3趟 : [16 19 22] [35 22] 第4趟 :
您可能关注的文档
- 软件工程实践教程 教学课件 作者 陆惠恩 第8章.ppt
- 软件工程实用教程 第2版 教学课件 作者 郭宁 第1章软件工程引论.ppt
- 软件工程实用教程 第2版 教学课件 作者 郭宁 第2章软件生存周期及开发模型.ppt
- 软件工程实用教程 第2版 教学课件 作者 郭宁 第3 章 结构化需求分析.ppt
- 软件工程实用教程 第2版 教学课件 作者 郭宁 第4章 结构化软件设计.ppt
- 软件工程实用教程 第2版 教学课件 作者 郭宁 第5 章 面向对象的需求分析.ppt
- 软件工程实用教程 第2版 教学课件 作者 郭宁 第6 章 面向对象的软件设计.ppt
- 软件工程实用教程 第2版 教学课件 作者 郭宁 第7 章 软件测试技术.ppt
- 软件工程实用教程 第2版 教学课件 作者 郭宁 第8 章 软件维护技术.ppt
- 软件工程实用教程 第2版 教学课件 作者 郭宁 第9 章 软件质量与质量保证.ppt
- 软件开发技术基础 第2版 教学课件 作者 赵英良 第3章 操作系统及相关程序设计1_概述及进程管理.ppt
- 软件开发技术基础 第2版 教学课件 作者 赵英良 第3章 操作系统及相关程序设计2_内存管理.ppt
- 软件开发技术基础 第2版 教学课件 作者 赵英良 第3章 操作系统及相关程序设计3_设备文件接口.ppt
- 软件开发技术基础 第2版 教学课件 作者 赵英良 第3章 操作系统及相关程序设计4_Windows编程入门.ppt
- 软件开发技术基础 第2版 教学课件 作者 赵英良 第4章 数据库及应用程序开发1_数据库技术基础.ppt
- 软件开发技术基础 第2版 教学课件 作者 赵英良 第4章 数据库及应用程序开发2_SQL.ppt
- 软件开发技术基础 第2版 教学课件 作者 赵英良 第4章 数据库及应用程序开发3_数据库设计.ppt
- 软件开发技术基础 第2版 教学课件 作者 赵英良 第4章 数据库及应用程序开发4_数据库应用程序编程.ppt
- 软件开发技术基础 第2版 教学课件 作者 赵英良 第5章 网络编程技术1_Internet基础.ppt
- 软件开发技术基础 第2版 教学课件 作者 赵英良 第5章 网络编程技术2_网络编程.ppt
文档评论(0)