网站大量收购独家精品文档,联系QQ:2885784924

数据结构-内排序实验报告.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验名称图运算及其应用指导老师朱洁实验类型上机实验学时3课时实验时间2016.12.29一、实验目的和要求: (1)验证内排序算法,分析算法的时间性能 ①验证各种基本排序算法 ②分析各算法的最好、最坏和平均情况时间复杂度,以渐近表示法表示。 ③产生不同规模和排列状态的数据集,测量算法的实际执行时间; ④比较理论分析和实际运行时间,解释理由。提示:使用随机数发生器产生随机测试数据;使用系统时钟测量运行时间。 (2)要求:1) 代码要有注释;2)实验报告中要求有测试数据分析(对同一个大数据集合使用不同排序算法所需的实际时间比较,要求使用多个大数据集合)二、实验运行环境(实验设备)计算机,Microsoft Visual C++6.0三、实验原理及内容#include stdio.h #include stdlib.h #include time.h #define N 100000//********************************************************/*int RAND(int argc, char *argv[]) { int i; srand((int)time(0)); for (i=0; iN; i++) { printf(%10d, rand()); } return 0; }*///************************************************************void Merge(int A[],int i1,int j1,int i2,int j2)//*****合并两个子序列*******{ int *T; T=(int*)malloc((j2-i1+1)*sizeof(int)); int i=i1,j=i2,k=0; while(i=j1j=j2) { if (A[i]=A[j]) T[k++]=A[i++]; else T[k++]=A[j++]; } while(i=j1) T[k++]=A[i++]; while(j=j2) T[k++]=A[j++]; for(i=0;ik;i++) A[i1++]=T[i]; free(T);}void QSort(int A[],int l, int r)//left.right上、下界{ int i,j,t; if(lr) { i=l;j=r+1; do { do i++;while(A[i]A[l]); do j--;while(A[j]A[l]); if(ij) { t=A[i]; A[i]=A[j]; A[j]=t; } }while(ij); t=A[l]; A[l]=A[j]; A[j]=t; QSort(A,l,j-1); QSort(A,j+1,r); } }void SelectSort(int A[],int n)//简单选择排序{ int small,i,j; int t=0; for(i=0;in-1;i++) { small=i; for(j=i+1;jn;j++) if(A[j]A[small]) small=j; t=A[i]; A[i]=A[small]; A[small]=t;}}void InsertSort(int A[],int n)//直接插入排序{ int i,t; for(i=1;in;i++) { int j=i; t=A[i]; while(j0tA[j-1]) { A[j]=A[j-1];j--; } A[j]=t; }}void BubbleSort(int A[],int n)//冒泡排序{ int i,j,last,t; i=n-1; while(i0) { last=0; for(j=0;ji;j++) { if(A[j+1]A[j]) { t=A[j]; A[j]=A[j+1]; A[j+1]=t; } last=j; } i=last;//*******如果一趟排序中没有交换元素,则last=0***********这个控制有效的减少了重复无效的趟数 }}void QuickSort(int A[],int n)//以初始序列为待排序列开始*****快速排序*****{ QSort(A,0,n-1);}void MergeSort(int A[],int n){ int i1,j1,i2,j2; //i1,j1是子序列的上,下界。i2,j2是子序列2的上,下界 int siz

文档评论(0)

js1180 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档