08500329雷雷-算法实验一.doc_第1页
08500329雷雷-算法实验一.doc_第2页
08500329雷雷-算法实验一.doc_第3页
08500329雷雷-算法实验一.doc_第4页
08500329雷雷-算法实验一.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

算法分析与设计实验日志指导教师 代宇 实验时间: 2010 年10月19日学院 计算机 专业 计算机科学与技术 班级 0410801 学号 08500329 姓名 雷雷 实验室 S308 实验题目:分治法实验目的:1 掌握分治法思想;2 熟练运用分治法解决相应的问题。实验要求:3 写一个“由底向上”的归并分类排序算法。4 用快速分类算法对10个数(键盘输入)进行从大到小或从小到大的排列并输出结果。实验主要步骤:第一题:#include#includeusing namespace std;void combine(int *,int,int,int);void mergesort(int *sortarray,int low,int high)int k=(low+high)/2;if(lowk和k+1-high这两段合并到low到high/把有序的两段数组合并为一段数组,并使合并这段数组同样有序void combine(int *sortarray,int low,int k,int high)vector temp(high-low+1,0); /temp是辅助存储数组,辅助存储当前排好序的状态int i,j,p;i=low;/控制前半段下标移动j=k+1;/控制后半段下标移动p=0; /控制temp的小标移动while(i=k&j=high)/但前半段或者后半段的数全部排好序(放入temp数组)时退出if(*(sortarray+i)*(sortarray+j) /从小到大排序tempp=*(sortarray+i);i+;elsetempp=*(sortarray+j);j+;p+;/把前半段没有排好序的数排序,放入temp数组while(ihigh)tempp=*(sortarray+i);i+;p+;/把后半段没有排好序的数排序,放入temp数组while(jk)tempp=*(sortarray+j);j+;p+;/把temp数组中的数拷贝会需要排序的数组,完成归并for(i=0;ihigh-low+1;i+)*(sortarray+low+i)=tempi;int main()int sortarray10=0;int num,low,high;/num是需要排序的个数,low和high控制排序的数据段int i=0;/freopen(stdin.txt,r,stdin);coutnum;for(i=1;i=num;i+)cout请输入数:*(sortarray+i);cout输入最小最大的个数:lowhigh;cout初始数据为:endl;for(i=1;i=num;i+)cout*(sortarray+i) ;coutendl;/进行归并排序mergesort(sortarray,low,high);cout从小到大排序后的数据为:endl;for(i=1;i=num;i+)cout*(sortarray+i) ;coutendl;return 0;、第二题:#include#include#includeQuickSort.husing namespace std;int main()int n;cout请输入你要排序的个数:n;vector a(n+1,0); cout请输入数:endl; for(int i=1;iai;cout由小到大排序结果为:endl;quicksort sorta(a);sorta.show();return 0;#ifndef QUICKSORT_H#define QUICKSORT_H#includeusing namespace std;class quicksortprivate:vector &sortarray;int partition(int low,int high)sortarray0=sortarraylow;while(lowhigh)while(low=sortarray0)high-;sortarraylow=sortarrayhigh;while(lowhigh&sortarraylow=sortarray0)low+;sortarrayhigh=sortarraylow;sortarraylow=sortarray0;return low;void qsort(int low,int high)if(lowhigh)sortarray0=partition(low,high);qsort(low,sortarray0-1);qsort(sortarray0+1,high);public:quicksort(vector &sortarr):sortarray(sortarr)qsort(1,sortarray.size()-1);void show()for(int i=1;isortarray.size();i+)if(i=sortarray.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论