版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法设计与分析实验学院:信息工程专业:计算机科学与技术算法实验报告二排序问题求解一、实验目的:1)以排序(分类)问题为例,掌握分治法的基本设计策略。2)熟练掌握一般插入排序算法的实现;3)熟练掌握快速排序算法的实现;4)理解常见的算法经验分析方法;二、实验要求:生成实验数据.要求:编写一个函数datagenetare,生成2000个在区间[1,10000]上的随机整数,并将这些数输出到外部文件data.txt中。这些数作为后面算法的实验数据。实现直接插入排序算法.实现快速排序算法.三、实验主要步骤:#include<stdlib.h>#include<stdio.h>#include<time.h>#include<math.h>#defineRAND_MAX10000#defineMax1000intI_Change_count=0;//插入排序比较计数器intI_Move_count=0; //插入排序移动计数器intS_Change_count=0;//选择排序比较计数器intS_Move_count=0;//选择排序移动计数器intQ_Change_count=0;//快速排序比较计数器intQ_Move_count=0;//快速排序移动计数器voidmain(){ longnum; longArray[Max],Brray[Max],Crray[Max];//分别用来保存随机数作为两个排序的对象 intA_Length; intLow=0; intHigh; time_tt; voidInsertSort(longArray[],intA_Length); //voidSelectSort(longBrray[],intA_Length); voidQuickSort(longCrray[],intLow,intHigh); srand((unsigned)time(&t));/*用时间初始化随机函数*/ intT,i; printf("输入你想要比较的数的个数,本算法是按照2的次方来计算的:"); scanf("%d",&T); A_Length=(int)pow(2.,T); if(A_Length>1000) { exit(0);//如果比较次数大于100000,退出程序 } High=A_Length-1; printf("比较的个数为:%d\n",A_Length); printf("=======================原序列=========================\n"); for(i=0;i<A_Length;i++) { Array[i]=rand()%1000000;//产生1000000内的第一个随机数 Brray[i]=Array[i]; Crray[i]=Array[i]; printf("%ld\t",Array[i]); } printf("\n\n"); printf("=======================插入排序后的序列=========================\n"); InsertSort(Array,A_Length); for(i=0;i<A_Length;i++) { printf("%ld\t",Array[i]); } printf("\n=======================插入排序的时间复杂度========================="); printf("\n插入排序:比较次数=%d,移动次数=%d,时间复杂度=%d\n\n",I_Change_count,I_Move_count,I_Change_count+I_Move_count); /*printf("=======================选择排序后的序列=========================\n"); SelectSort(Brray,A_Length); for(inti=0;i<A_Length;i++) { printf("%ld\t",Brray[i]); } printf("\n=======================选择排序的时间复杂度========================="); printf("\n选择排序:比较次数=%d,移动次数=%d,时间复杂度=%d\n\n",S_Change_count,S_Move_count,S_Change_count+S_Move_count);*/ printf("=======================快速排序后的序列=========================\n"); QuickSort(Crray,Low,High); for(i=0;i<A_Length;i++) { printf("%ld\t",Crray[i]); } printf("\n=======================快速排序的时间复杂度========================="); printf("\n插入排序:比较次数=%d,移动次数=%d,时间复杂度=%d\n",Q_Change_count,Q_Move_count,Q_Change_count+Q_Move_count);}voidInsertSort(longArray[],intA_Length){ inti,j; longsignal;for(i=1;i<A_Length;i++)//依次插入Array[1],…,Array[n-1]if(Array[i]<Array[i-1]||(I_Change_count++&&0))//比较失败时,比较计数器自加 { I_Change_count++;//比较成功时因为“||”后面的不执行所以比较计数器得自加signal=Array[i]; j=i-1;//signal是哨兵,且是Array[i]的副本do{//从右向左在有序区Array[1..i-1]中查找Array[i]的插入位置I_Change_count++;//比较成功时直接执行所以比较计数器放在此处 Array[j+1]=Array[j];//将关键字大于Array[i]的记录后移I_Move_count++; j--;}while(signal<Array[j]);//当signal≥Array[j]时终止 I_Change_count++;//比较失败时,循环跳出比较计数器自加一次Array[j+1]=signal;//Array[i]插入到正确的位置上}//endif}voidSelectSort(longBrray[],intA_Length){ inti,j,k; longsignal; for(i=0;i<A_Length;i++) { k=i; for(j=i+1;j<A_Length;j++) { S_Change_count++;//因为不管比较成不成功都要比较A_Length-j次 //所以将比较计数器放在比较前 if(Brray[j]<Brray[k]) k=j; } if(k!=i) { signal=Brray[i]; Brray[i]=Brray[k]; Brray[k]=signal; S_Move_count++;//每次交换当做移动一次,因为其他赋值都是为了完成算法而写的 //我们认为两者的交换只要一次就实现 } }}voidQuickSort(longCrray[],intLow,intHigh){ intC_Low=Low,C_High=High; longsignal=Crray[Low]; if(Low>=High)return; while(C_Low!=C_High) { while(C_Low<C_High&&Crray[C_High]>=signal) C_High--; Crray[C_Low]=Crray[C_High]; while(C_Low<C_High&&Crray[C_Low]<=signal) C_Low++; Crray[C_High]=Crray[C_Low]; Q_Change_count++; } Crray[C_Low]=signal; Q_Move_count++; QuickSort(Crray,Low,C_Low-1); QuickSort(Crra
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 经络腧穴学护理应用教学课件
- 2026年高中地理总复习讲解-常见的地貌类型
- 泌尿外科结石患者的护理健康教育内容
- 2026年云端健康数据分析平台隐私计算与联邦学习技术应用
- 2025年前台服务礼仪测试题
- 2025年前台服务规范竞赛题
- 2026年富钴结壳湿式强磁选扩大试验操作指南
- 电信综合项目工程综合项目施工专项方案
- 2026年膜蒸馏技术处理真实海水反渗透盐水实验研究
- 护理课件:学习护理职业伦理
- 2026年滁州职业技术学院单招综合素质考试题库附答案详解
- 2026春统编版三年级下册道德与法治每课知识点清单
- 2025年建筑安全员c2考试题及答案
- 2025中国国新控股有限责任公司招聘7人笔试历年常考点试题专练附带答案详解
- 合作协议书(通用15篇)
- 高铁站前广场及配套道路建设项目施工组织总设计
- 教育学原理-第五章-人的全面发展教育-适用于项贤明主编《教育学原理》(马工程)
- 第四章-管理伦理课件
- 测量管理体系管理手册
- 钻井液处理剂名称及作用
- MHC与移植免疫课件
评论
0/150
提交评论