资源描述:
《中科大算法导论实验源码和报告(共8篇)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划中科大算法导论实验源码和报告(共8篇) 实验一常见排序算法的实现与性能比较 一、实验环境 操作系统:WindowsXP操作系统 编程语言:C语言 开发工具:MicrosoftVisualC++ 二、问题描述 实现合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序算法 三、实验要求 A.在随机产生的空间大小分别为N=10,1000,10000,的排序样本上测试以上算法。 B.结果输出: 1)N=10时,排序结果。 2)
2、N=1000,10000,时,对同一个样本实例,不同排序完成所需的时间。 3)N=1000,10000,时,每个排序用不同的样本多试验几次得出平均时间,比较不同排序算法所用的平均时间。 四、各种排序算法的原理及算法语言描述 合并排序算法 1)合并排序的原理:目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 采用分治法。分解:把待排序的n个元素的序列分解成两个子
3、序列,每个子序列包括n/2个元素。治理:对每个子序列分别调用归并排序MergeSort,进行递归操作。合并:合并两个排好序的子序列,生成排序结果。 2)合并排序算法语言描述: voidMerge(floatA[],intp,intq,intr){ intn1,n2,i,j,k; floatL[10],R[10]; n1=q-p+1; n2=r-q; for(i=1;i=0&&A[i]>key){ A[i+1]=A[i]; i--; } A[i+1]=key; } } 希尔排序算法 1)希尔排序原理: 首先取一个小于n的增量d
4、1,将待排数据分成n/d1个组,其中距离目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 为d1的数据分在同一个组内。现在组内进行直接插入排序,取第二个增量d20;step=step/2){//step为步长,初始为n/2,每次减半 for(i=step;i=0&&A[j]>key){ A[j+step]=A[j]; j=j-step; } A[j+step
5、]=key; } } } 快速排算法 1)快速排序原理: 任找一个元素作为基准,对待排数组进行分组,使基准元素左边的数据比基准数据要小,右边的数据比基准数据要大,这样基准元素就放在了正确的位置上。然后对基准元素左边和右边的组进行相同的操作,最后将数据排序完成。 2)快速排算法语言描述: voidQuick_sort(floatA[],intleft,intright){ inti,j; floatkey; i=left; j=right;目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平
6、,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 key=A[i]; while(i=key){ j--; } A[i]=A[j]; while(ii+1){ Quick_sort(A,i+1,right); } } 冒泡排序算法 1)冒泡排序原理: 两两比较待排序数据元素的大小,若发现两个数据元素的次序相反则进行交换,直到没有反序的数据为止。 2)冒泡排序算法语言描述: voidBubble_sort(floatA[],intn){
7、 inti,j; intflag;//作为是否发生变化的标志 floatt; for(i=0;ii;j--){ if(A[j] #include usingnamespacestd;目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 voidQuickSort(intarr[],intlo,inthi) { } //这里的lo和hi是数组的下标;if(
8、lo>=hi){return;}intfi=lo;//0开始int