数据结构--实验算法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构--实验算法

修改test_bin_serach文件夹下bin_serach.h文件,添加一函数,利用中bin_serach.h内的二分查找算法实现在一个有序表中插入一个元素x,并保持表的有序性。 template class ElemType, class KeyType void bininsert(ElemType elem[], int n, KeyType key) { int low=0,high=n-1,mid,i; int inplace; int find=0; while(low=highfind==0) { mid=(low+high)/2; if(keyelem[mid]) high=mid-1; else if(keyelem[mid]) low=mid+1; else find=1; } if(find) inplace=mid; else inplace=low; for(i=n-1;i=inplace;i--) elem[i+1]=elem[i]; elem[inplace]=key; n++; } 修改test_binary_sort_tree文件夹下binary_sort_tree.h文件,添加一成员函数,采用非递归算法求出二叉搜索树中的关键字最大的元素,并在main.cpp文件中进行测试。 template class ElemType, class KeyType BinTreeNodeElemType *BinarySortTreeElemType, KeyType::SearchMax() { BinTreeNodeElemType *tmp; if(root==NULL) return NULL; tmp=root; while(tmp-rightChild!=NULL) { tmp=tmp-rightChild; } return tmp; } (选作)设计二分查找的递归算法。 int Binsch( ElemType A[] , int low , int high , KeyType K ) { if ( low = hight ) { int mid = (low+high)/2; if ( K == A[mid].key ) return mid; // 查找成功,返回元素的下标 else if ( K A[mid].key ) return Binsch( A , low , mid-1 , K ); // 在左子表上继续查找 else return Binsch( A , mid+1 , high , K ); // 在右子表上继续查找 } else return -1; // 查找失败,返回-1 } 1.编写一个对整型数组A[n]~A[n-1]元素进行选择排序的算法,要求首先从待排序区间中选择出一个最小值并同第1个元素交换,再从待排序区间中选择出一个最大值并同最后一个元素交换,反复进行直到待排序区间中元素的个数不超过1为止,参考程序如下: #includeiostream.h #includestdlib.h typedef int ElemType; #define MAXSIZE 100 void DBubbleSort(ElemType A[],int n) { ElemType temp; int i=0,j,flag=1; while(flag) { flag=0; for(j=n-i-1;j=i+1;j--) if(A[j]A[j-1]) { temp=A[j-1]; A[j-1]=A[j]; A[j]=temp; flag=1; } for(j=i+1;j=n-i-2;j++) if(A[j]A[j+1]) { temp=A[j]; A[j]=A[j+1]; A[j+1]=temp; flag=1; } i++; for(j=0;jn;j++) coutA[j] ; coutendl;

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档