电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

各种排序实验报告

各种排序实验报告_第1页
1/60
各种排序实验报告_第2页
2/60
各种排序实验报告_第3页
3/60
各种排序实验报告需求分析课程题目是排序算法的实现,课程设计一共要设计八种排序算法。这八种算法共包括:堆排序,归并排序,希尔排序,冒泡排序, 快速排序,基数排序,折半插入排序,直接插入排序。为了运行时的方便,将八种排序方法进行编号,其中 1 为堆排序,2为归并排序,3 为希尔排序,4 为冒泡排序,5 为快速排序,6 为基数排序,7 为折半插入排序 8 为直接插入排序。概要设计1.堆排序⑴ 算法思想:堆排序只需要一个记录大小的辅助空间,每个待排序的记录仅占有一个存储空间。将序列所存储的元素 A[N]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的元素均不大于(或不小于)其左右孩子(若存在)结点的元素。算法的平均时间复杂度为 O(N log N)。⑵ 程序实现及核心代码的注释:for(j=2*i+1; j=m; j=j*2+1){if(jm1(su[j]su[j+1]))j++;if(temp=su[j])break;su[i]=su[j];i=j;}su[i]=temp;}void dpx() //堆排序{int i,temp;cout 排序之前的数组为:endl;output();for(i=N/21; i=0; i){head(i,N);}for(i=N1; i0; i){temp=su[i];su[i]=su[0];su[0]=temp;head(0,i1);}cout 排序之后的数组为:endl;output();}2.归并排序⑴ 算法思想:先将相邻的个数为 1 的每两组数据进行排序合并;然后对上次归并所得到的大小为 2 的组进行相邻归并;如此反复,直到最后并成一组,即排好序的一组数据。 ⑵程序实现及核心代码的注释:int is2[1000];void bin(int low,int mid,int high){int i=low,j=mid+1,k=low;while(i=midj=high)if(su[i]=su[j]) // 此处为排序顺序的关键,用小于表示从小到大排序 is2[k++]=su[i++];elseis2[k++]=su[j++];while(i=mid)is2[k++]=su[i++];while(j=high)is2[k++]=su[j++];for(i=low; i=high; i++) // 写回原数组su[i]=is2[i];}void g(int a,int b){if(ab){int mid=(a+b)/2;g(a,mid);g(mid+1,b);bin(a,mid,b);}}3.希尔排序⑴ 算法思想:先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。其中,子序列的构成不是简单的“逐段分割”,而是将分隔某个“增量”的记录组成一个子序列。⑵ 程序实现及核心代码的注释:while(m){m/=2;if(m!=0){for(i=m; iN; i++)if(su[i] su[im]){temp=su[i];for(j=im; j=0(tempsu[j]); j=m)su[j+m]=su[j];su[j+m]=...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

各种排序实验报告

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部