算法和数据结构C语言习题答案6--9章.docx
《算法和数据结构C语言习题答案6--9章.docx》由会员分享,可在线阅读,更多相关《算法和数据结构C语言习题答案6--9章.docx(5页珍藏版)》请在优知文库上搜索。
1、1.现在有一个已排序的字典,请改写二分法检索算法,使之当排序码key在字典中重复出现时算法能找出第一个key出现的元素下标(用position来保存)。保持算法时间代价为O(logn)o【答】思路一般的二分法检索算法只要找出关键码key在字典中的一个下标。在比较的过程中,一旦发现相等,记录下当前下标mid就符合要求。程序如下:数据构造字典采用6.1.4节中的顺序表示法。typedefintKeyType:typedefintDataType;二分法检索算法intbinarySearch(SeqDictionarjr*pdic.KeyTypekey,int*position)(intlow,mi
2、d,high;low=0;high=pdic-n-1;while(lowelementmid.key=key)position=mid;returnTRUE;)elseif(pdic-elementlmid.keykey)high=mid-I;elselow=mid+1;)position=low;returnFALSE;)改写后的算法想要找出关键码key在字典中第一次出现的下标。在比较中,如果遇到相等(key与pdic-elementmidj.key相等,那么需要分情形讨论O1如果当前下标mid等于0,或者key与pdic-elementmid-1.key不等,那么mid一定是key第一次出
3、现的下标,返回mid即可。2如果情形1不成立,那么mid一定大于等于key第一次出现的下标,需要在IOW和mid-1之间继续进展搜索,找出key第一次出现的下标。下面算法中,加粗的局部是对原算法的修改。修改后的二分法检索算法intbinarySearch1(SeqDictionary*pdic.KeyTypekey,int*position)产算法完毕后,position存放key第一次出现的下标*/intlow,mid,high;low=0;high=pdic-n-1;while(lowelement(mid.key=key)if(mid=OHkey!=pdic-elementmid-lj.
4、kcy)*position=mid;returnTRUE;*此时mid就是key在字典中第一次出现的下标*/elsehigh=mid-1;/*在左半段继续搜索可elseif(pdic-elementmid.keykey)high=mid-1;elselow=mid+1;)*position=low;returnFALSE;代价分析该算法的时间复杂度为O(IOgn)O2 .试编写一算法求出指定结点在给定的二叉排序树中所在的层数。【答】数据构造采用7.1.3节中字典的二叉排序树表示。算法intsearch_layer(PBinTreepbtree.PBinTreeNodepnode)(/*返回二叉
5、排序树*pbtree中结点*pnode所在层数,要求所给结点在树中*/intlayer=0;PBinTreeNodeP=*pbtree;while(p!=NULL)if(p-key=pnode-key)returnlayer;*查找结点成功,返回层数*/if(p-keypnode-key)(p=p-llink;/*进入左子树继续查找*/layer+;)elsep=p-rlink;/*进入右子树继续查找*/layer+;)return-1;/*查找结点失败*/)代价分析假设二叉排序树有个结点,高度是力(IOg2=标=),算法执行的时间代价最坏为Q/?)。*注意根结点为零层。3 .试编写一算法在给
6、定的二叉排序树上找出任意两个不同结点最近的公共祖先(假设在两结点A,B中,A是B的祖先,那么认为A,B最近的公共祖先就是A)。数据构造同上题算法intFindLoWeSlCOmmonAnCeSIor(PBinSearChNoderoot,inivalue1,intvalue2)PBinSearchNodecurnode=root;while(l)if(curnokeyvalue1&curnokeyvalue2)curnode=cumllink;elseif(cumode-keykeyrlink;elsereturncumode-key;)4 .设计一个有效的算法,在1000个无序的元素中,挑选
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 数据结构 语言 习题 答案