版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法设计与分析实验学院:信息工程专业:计算机科学与技术算法实验报告二排序问题求解一、实验目的: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年安徽淮北市高职单招职业适应性测试考试题库(含答案)
- 2025年农业科技年终总结
- 2026《职业病防治法》宣传周知识竞赛考试题库含答案
- 冬天嘴唇总起皮 - 别用手撕课件
- 山西省吕梁市乃东区卫生类事业单位高层次紧缺人才招聘冲刺密卷
- 《认识系统中的控制》同步练习及答案-2026-2027学年川教版(新版)小学信息科技六年级上册
- 2026年计算机工程师计算机原理试题及答案
- 2025年城管协管员笔试考试试题(含答案)
- 医疗健康管理与慢病防控
- 2026年认证基础、管理体系认证基础主观题考试(附答案)解析
- 2026河北机关事业单位工人技能等级考试(汽车驾驶员·高级)历年参考题库含答案详解2卷
- 2026年急诊超声应用培训课件
- 正压送风口阀体损坏更换安装调试方案
- 新学期(2026年秋)小学二年级体育教学工作计划
- 跟腱断裂的术后护理
- 《光伏电站场区总平面布置技术要求》
- 物料预警管理办法
- 排球裁判员培训讲课课件
评论
0/150
提交评论