版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据构造实验报告4(一)题目按下述原则编写快排的非递归算法:一趟排序以后,若子序列已有序(无互换),则不参加排序,不然先对长度较短的子序列进行排序,且将另一子序列的上、下界入栈保留;若待排记录数<=3,则不再进行切割,而是直接进行比较排序。测试实例:{49386597761327498821105}(二)算法思路成立储存序列上下界的栈序列。对栈顶作以下判断:A.若栈顶中记录的头与尾相距小于3,对对应的子序列进行排序,而后出栈,进入(3);B.若栈顶中记录的头与尾相距大于等于3,则进行分块,判断分块能否有序,a.若两分块都有序,则出栈,进入(3);b.若只有一分块有序,则改变栈顶内容为无序分块内容,进入(3);c.若两分块都无序,则改变栈顶内容为较长的无序块,而后把较短的无序块压进栈。进入
(3)(3)重复(2)的操作,直至栈空,获得最后结果。(三)程序构造定义的构造体及申明#defineMAX_SEQ100//最大输入数typedefstruct_stack{intleft;//lowerboundintright;//upperboundstruct_stack*next;}qstack;//tostorethechildsequence'slowerboundandupperbound主函数变量及其说明变量名
说明intarray[MAX_SEQ]
储存输入序列intn
输入的序列长度重要函数以及说明函数名功能变量说明boolsorted(int*arr,intleft,intright)判断序列能否有序arr为等排序的数组,left为下界,right为下界。有序或许是left>right时返回true,不然返回falsevoidsort(int*arr,intleft,intright)给三个或三个以下的arr为等排序的数组;left为序列排序下界;right为下界。voidqsort(int*arr,intleft,intright)迅速排序同上(四)源码#include<iostream>#defineMAX_SEQ100usingnamespacestd;typedefstruct_stack{intleft;//lowerboundintright;//upperboundstruct_stack*next;}qstack;//tostorethechildsequence'sleftandrightvoidsort(int*arr,intleft,intright){for(inti=left;i<=right;i++){
//sortchildsequencelessthan3intk=i;for(intj=i+1;j<=right;j++){if(arr[k]>arr[j])k=j;}if(k!=i){intt;t=arr[k];arr[k]=arr[i];arr[i]=t;}}}boolsorted(int*arr,intleft,intright){for(inti=left;i<right;i++){if(arr[i]>arr[i+1])returnfalse;}returntrue;}voidqsort(int*arr,intleft,intright){qstack*head;head=newqstack;head->left=left;head->right=right;head->next=NULL;qstack*p;while(head!=NULL){if(head->right-head->left<3){//iflessthan3,sortandpopsort(arr,head->left,head->right);p=head;head=head->next;deletep;}else{//generally,separatethesequenceintml=head->left,mr=head->right;intmm=ml;intk=arr[mm];//findtheposition,thekeypartofquicksortwhile(ml<mr){if(mm==ml){if(arr[mr]>=k)mr--;else{arr[mm]=arr[mr];mm=mr;}}if(mm==mr){if(arr[ml]>k){arr[mm]=arr[ml];mm=ml;}elseml++;}}arr[mm]=k;booll=sorted(arr,head->left,mm-1);boolr=sorted(arr,mm+1,head->right);if(!l&&r){//leftchildsequenceisn'tsorted,thenchangethetophead->right=mm-1;}elseif(l&&!r){//rightchildsequenceisn'tsorted,thenchangethetophead->left=mm+1;}elseif(!l&&!r){//bothsequencesaren'tsorted,thenchangethetopone//tothelongersequence,pushtheshorteronetothestackp=newqstack;if(mm-head->left>head->right-mm){p->left=mm+1;p->right=head->right;head->right=mm-1;}else{p->left=head->left;p->right=mm-1;head->left=mm+1;}p->next=head;head=p;}else{//bothsequencesaresorted,thenpophead=head->next;}}}}intmain( ){intarray[MAX_SEQ];intn;while(cout<<"inputthelengthofthesequence:",cin>>n){cout<<"input"<<n<<"numbers\n";for(inti=0;i<n;i++)cin>>array[i];qsort(array,0,n-1);cout<<"afterquicksorted:\n";for(inti=0;i<n;i++)cout<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 母婴跨境电商品牌建设与传播
- 电缆桥架建设竞标
- 2024年度委托合同:资产管理委托协议(2024版)
- 短期企业贷款合同协议书
- 离职员工诚信离职书
- 资产转让多方协议样本
- 医用耗材采购招标文件
- 黄沙选购合同
- 长期合作包装材料供应协议
- 郑州西亚斯学院《妇产科护理学》2022-2023学年第一学期期末试卷
- 农村户改厕施工协议书
- 品管圈PDCA持续质量改进提高静脉血栓栓塞症规范预防率
- 儿童支气管哮喘规范化诊治建议(2020年版)
- 2023年人教版中考物理专题复习-九年级全册简答题专题
- 屋顶光伏发电应急预案
- 当代艺术与传统文化的交流与融合
- 《配电网保护分级配置及整定技术规范》
- 中国这十年医疗发展
- 《戏剧基本常识》课件
- 侮辱罪的立案标准
- 珠宝市场调研报告
评论
0/150
提交评论