下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、对已学的知识中提高时间性能的思索算法对效率和低储存量有要求当线性表中各结点的查找概率不相等时,则可用如下策略提高顺序查找的性能:若找到指 定结点,则将该结点和其前驱交换(若存在),使得经常被查找的结点尽量位于表的前端。【也可以给每个结点设置一个访问频度域,每次查找成功时,将对应结点访问频度域加1, 并按访问频度域调整链表中结点的位置。】对线性表的顺序存储结构int seqsrch(R,k)Rectype R;Krytype k;(int i,t;i=0;While(Ri.key!=k)&(in)(i+;if(inext;While(q!=null)&(q-data!=k)(p=q;q=q-ne
2、xt;If(q&p!=head)(temp=p-data;p-data=q-data;q-data=temp;q=p;return q;设置访问频度域Locatenode(dulinklist &L,Elemtype e)(dulinklist *p,*q;While(p)(if(p-data!=e) p=p-next;Else(p-freq+;break;While(q)(if(q-freqp-freq)q=q-next;Else(p-prior-next=p-next;p-next-prior=p-prior;p-next=q;p-prior=q-prior;q-prior-next=p;
3、q-prior=p;return ok;当有序表的各记录查找概率不相等时,用折半查找的判定树其查找性能不是最优,这时需 要构造一颗静态最优查找树,但构造静态最优查找树花费的时间代价较高,这时可构造一 颗次优查找树。构造静态最优查找树(代码是网上找的)#include #include #include #define N 4void OBST(int P, int Q, int RN+1, int n)/采用动态规划法构造最佳二分树int WN+1N+1;/Wi,j=sum(i,j,q)+sum(i+1,j,p);int CN+1N+1;for(int i=0; i=N; i+)for(int
4、 j=0; j=N; j+) Wij=Cij=Rij=0;for(i=0; i=n-1; i+)Wii = Qi;Rii = 0;Cii = 0;Wii+1 = Qi+Qi+1+Pi+1;Rii+1 = i+1;Cii+1 = Qi+Qi+1+Pi+1;Wnn = Qn;Rnn = 0;Cnn = 0;for(int m=2; m=n; m+)找有m个结点的最优树,m从个开始,直到n个(也就是说最佳二分树构造成了) for(int i=0; i=n-m; i+) /i是本次需要计算的含m个内节点的树个数 int j = i+m;/j是含m 个内节点的树的最后一个叶子节点下标Wij = Wij-
5、1+Pj+Qj;/i是含m个内节点的树 的第一个叶子节点的下标int k = i+1; / k是本次计算的第一个内点的下标值,以下标是k的 内节点为根的最佳二分树的权值和最小,找使得Cik-1+Ckj最小的k,且ik=jint min = Cik-1+Ckj;for(int L=i+2; L=j; L+) int temp = CiL-1+CLj;/if(tempmin) min = temp; k = L;Cij = Wij+Cik-1+Ckj;Rij = k;Printf(“最佳查找树举例:n);printfC输出 W,C,R 的表格:n);printf(%7s%-11s%-11s%-11
6、s%-11s%-11s”, ”,”0”,”1”,”2”,”3”,”4,for(i=0; i=N; i+) printf(n%-3d”, i);for(int j=0; j=N; j+) printf( %-3d%-3d%-3d ,Wij, Cij, Rij);void getTree(int tree, int num, int R5, int i, int j) if(!Rij) return;treenum = Rij;getTree(tree, num*2, R, i, Rij-1);getTree(tree, num*2+1, R, Rij, j);int main()int PN+1
7、=0, 1, 3, 2, 2;int QN+1=2, 1, 3, 1, 1;int RN+1N+1;OBST(P, Q, R, N);int num=(int)pow(double)2, (double)N);int* tree=new intnum;for(int i=0; inum; i+) treei = 0;/ 将树清空 getTree(tree, 1, R, 0, N);/由Rij获取最优二叉检索树/按照树的编码方式存入数组tree中printf(nn 输出如下:n);for(i=1; inum; i+) /输出在数组中存储的树的结点printf(%2d(%d)t, i, treei
8、);if(i%5=0) printf(n);getchar();return 0;动态规划算法的关键在于解决冗余,这是动态规划算法的根本目的。动态规划实质上是 一种以空间换时间的技术,它在实现的过程中,不得不存储产生过程中的各种状态,所以它 的空间复杂度要大于其它的算法。选择动态规划算法是因为动态规划算法在空间上可以承 受,而搜索算法在时间上却无法承受,所以我们舍空间而取时间。所以,能够用动态规划解 决的问题还有一个显著特征:子问题的重叠性。这个性质并不是动态规划适用的必要条件, 但是如果该性质无法满足,动态规划算法同其他算法相比就不具备优势。动态规划算法通常用于求解具有某种最优性质的问题。在
9、这类问题中,可能会有许多可 行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类 似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题 的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问 题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子 问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已 求得的答案,这样就可以避免大量的重复计算,节省时间。我们可以用一个表来记录所有已 解的子问题的答案。不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中
10、。 这就是动态规划法的基本思路。具体的动态规划算法多种多样,但它们具有相同的填表格式。 任何思想方法都有一定的局限性,超出了特定条件,它就失去了作用。同样,动态规划也并 不是万能的。适用动态规划的问题必须满足最优化原理和无后效性。最优化原理(最优子结构性质)最优化原理可这样阐述:一个最优化策略具有这样的性 质,不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构成最 优策略。简而言之,一个最优化策略的子策略总是最优的。一个问题满足最优化原理又称其 具有最优子结构性质。无后效性将各阶段按照一定的次序排列好之后,对于某个给定的阶段状态,它以前各阶 段的状态无法直接影响它未来的决
11、策,而只能通过当前的这个状态。换句话说,每个状态都 是过去历史的一个完整总结。这就是无后向性,又称为无后效性。子问题的重叠性动态规划将原来具有指数级时间复杂度的搜索算法改进成了具有多项式 时间复杂度的算法。其中的关键在于解决冗余,这是动态规划算法的根本目的。动态规划实 质上是一种以空间换时间的技术,它在实现的过程中,不得不存储产生过程中的各种状态, 所以它的空间复杂度要大于其它的算法。分析冒泡排序在不同情况下的时间复杂度,并针对相应的情况给出可行的改进方案。当记录为正序时,只需要进行一次排序,进行n-1次关键字的比较,时间性能为O(n);当记录为逆序时,采用每一趟都有“最小”石头沉到水底的方法,时间性能为O(n);当记录的关键字值分布比较随机时,改进为快速排序,平均时间复杂度为O(nlgn);快速排序的时间性能改进当记录的关键字值有序或基本有序,通常用三者取中的法则来选取枢轴记录,即比较 L.rs.key,L.rt.key和L.r(s+t)/2.key取三者中关键字终值的记录为枢轴,可改善快速排序 的时间性能。为进一步改善快速排序的时间性能,可修改一次划分算法:在指针high减1和low增1的同 时进行“起泡”操作,即在相邻两个记录处于“
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 证券市场资深操盘手实战宝典
- 部队学身边典型演讲稿
- 读书让我们进步演讲稿
- 2026年体育与健康锻炼方法试题
- 爱国演讲稿开头惊艳句子
- 2026年大学生学法用法法律知识竞赛考试题库及答案(共220题)
- 我是职校人我骄傲演讲稿
- 文明校园最美宿舍演讲稿
- 自强不息提升实力演讲稿
- 2026年大学生百科知识竞赛挑战题160题及答案
- GB/T 36935-2025鞋类鞋号对照表
- 药房三基三严培训课件
- 国家深海基地管理中心招聘笔试题库2025
- 大学保安礼仪培训课件
- 井下八大系统讲解课件
- 2026年南京城市职业学院单招职业适应性考试题库必考题
- 2026年扎兰屯职业学院单招职业适应性测试题库及答案1套
- 2026年辽宁师范高等专科学校单招综合素质考试题库及答案1套
- 聊天沙龙活动策划方案
- 2025年上海证券交易所招聘笔试模拟题之金融专业知识篇
- 2025年党员个人检视问题清单及整改措施表(四篇)
评论
0/150
提交评论