实验十二 排序技术实验报告

上传人:yh****1 文档编号:125954856 上传时间:2020-03-21 格式:DOC 页数:10 大小:118KB
返回 下载 相关 举报
实验十二 排序技术实验报告_第1页
第1页 / 共10页
实验十二 排序技术实验报告_第2页
第2页 / 共10页
实验十二 排序技术实验报告_第3页
第3页 / 共10页
实验十二 排序技术实验报告_第4页
第4页 / 共10页
实验十二 排序技术实验报告_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《实验十二 排序技术实验报告》由会员分享,可在线阅读,更多相关《实验十二 排序技术实验报告(10页珍藏版)》请在金锄头文库上搜索。

1、 .实验十二 排序技术实验一、 实验目的1 掌握各种排序算法的基本思想; 掌握各种排序算法的实现方法; 掌握各种排序算法的时间性能及其花费时间的计算。 掌握各种排序算法所适应的不同场合。二、 实验内容 1、随机函数产生10000个随机数,用直接插入、希尔、冒泡、直接选择等排序方法排序,并统计每一种排序所花费的时间。2、随机函数产生30000个随机数,用快速、堆、归并等排序方法排序,并统计每一种排序所花费的时间。三、 设计与编码 #include #include #include using namespace std;void ShuChu(int r,int n)cout输出:;for(i

2、nt i=0;in;i+)coutrit;coutendl;cout*endl;void InsertSort(int r,int n) /插入排序int a=r0;for(int i=2;in;i+)r0=ri;for(int j=i-1;r0=1;d=d/2)for(int i=d+1;i0 & r0rj;j=j-d)rj+d=rj; rj+d=r0;r0=a;void BubbleSort(int r,int n) /冒泡排序int exchange=n-1;while(exchange!=0)int bound=exchange;exchange=0;for(int j=1;jrj+1

3、)int s=rj+1;rj+1=rj;rj=s;exchange=j;void SelectSort(int r,int n) /选择排序for(int i=0;in-1;i+)int index=i;for(int j=i+1;j=n-1;j+)if(rjrindex)index=j;if(index!=i)int a=rindex;rindex=ri;ri=a;ShuChu(r,n);int Partition(int r,int first,int end) /快速排序一次划分算法int i=first;int j=end;r0=ri;int p=ri;while(ij)while(i

4、j&ri=rj)j-;if(ij)int a=rj;rj=ri;ri=a;i+;while(ij&ri=rj)i+;if(ij)int b=rj;rj=ri;ri=b;j-;return i;void QuickSort(int r,int first,int end) /快速排序算法int a=r0;if(firstend)int pivot=Partition(r,first,end);QuickSort(r,first,pivot-1);QuickSort(r,pivot+1,end);r0=a;void Sift(int r,int k,int m) /筛选法调整堆的算法int i=k

5、;int j=2*i;while(j=m)if(jm&rj=rj)break;elseint a=rj;rj=ri;ri=a;i=j;j=2*i;void HeapSort(int r,int n) /堆排序算法for(int i=n/2;i=1;i-)Sift(r,i,n-1);for(i=2;in-1;i+)int a=rn-i+1;rn-i+1=r1;r1=a;Sift(r,1,i-1);void Merge(int r,int r1,int s,int m,int t) /一次归并算法int i=s;int j=m+1;int k=s;while(i=m&j=t)if(ri=rj)r1

6、k+=ri+;else r1k+=rj+;if(i=m)while(i=m)r1k+=ri+;else while(j=t)r1k+=rj+;void MergePass(int r,int r1,int n,int h)int i=1;int a=n-2*h+1;while (i=a)Merge(r,r1,i,i+h-1,i+2*h-1);i+=2*h;if(in-h+1)Merge(r,r1,i,i+h-1,n);else for(int k=i;k=n;k+)r1k=rk;void MergeSort(int r,int r1,int n) /归并排序非递归算法int h=1;while

7、 (hn)MergePass(r,r1,n,h);h=2*h;MergePass(r1,r,n,h);h=2*h;void menu()cout排序技术实验endl; cout*endl;cout1.直接插入排序endl;cout2.希尔排序endl; cout3.冒泡排序endl;cout4.直接选择排序endl;cout5.快速排序endl;cout6.堆排序endl;cout7.归并排序endl; cout8.退出endl;int main() clock_t start,end; menu(); int flag=1; while(flag) int i; cout*endl; cou

8、ti; switch(i) case 1:int srand(30001);int a30001;int n;coutn;a0=0;for(int i=1;in;i+)ai=rand();ShuChu(a,n);cout直接插入排序结果:endl;start=clock();InsertSort(a,n);end=clock(); ShuChu(a,n);double count=(double)(end-start)/1000;cout排序所用时间为:count秒endl;break;case 2:int srand(30001);int a30001;int n;coutn;a0=0;fo

9、r(int i=1;in;i+)ai=rand();ShuChu(a,n);cout希尔排序结果:endl;start=clock();ShellSort(a,n);end=clock();ShuChu(a,n);double count=(double)(end-start)/1000;cout排序所用时间为:count秒endl;break; case 3: int srand(30001);int a30001;int n;coutn;a0=0;for(int i=1;in;i+)ai=rand();ShuChu(a,n); cout冒泡排序结果:endl; start=clock(); BubbleSort(a,n); end=clock(); ShuChu(a,n);double count=(double)(end-start)/1000;cout排序所用时间为:count秒endl; break; case 4:int srand(30001);int a30001;int n;cout请输入随机产生的随机数的个数:n;a0=0;for(int i=1;in;i+)ai=rand();ShuChu(a,n);cout直接选择排序结果:endl;start=clock();SelectSort(a,n);end=

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 设计及方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号