排序算法总结(二)归并法
来源:互联网 发布:js判断正则表达式 编辑:程序博客网 时间:2024/05/22 13:38
递归法
#include<iostream>using namespace std;void Merge(int r[],int r1[],int b,int m,int e){int i=b;int j=m+1;int k=b;while((i<=m)&&(j<=e)){if(r[i]<=r[j]){r1[k]=r[i];i++;k++;}else{r1[k]=r[j];j++;k++;}}if((i<=m)){while(i<=m){r1[k++]=r[i++];}}else if(j<=e){while(j<=e){r1[k++]=r[j++];}}}void MergeSort(int r[],int r1[],int s,int t){int r2[100];if (s==t){r1[s]=r[s];}else{int m=(s+t)/2;MergeSort(r,r2,s,m);MergeSort(r,r2,m+1,t);Merge(r2,r1,s,m,t);}}void main(){int a[7]={8,7,9,3,4,1,2};MergeSort(a,a,0,6);//递归调用 使得可以更新a值for(int i=0;i<7;i++){cout<<a[i]<<' ';}system("pause");}
非递归法
#include<iostream>using namespace std;void Merge(int r[],int r1[],int b,int m,int e){//一次归并int i=b,j=m+1,k=b;while((i<=m)&&(j<=e)){if(r[i]>=r[j]){r1[k++]=r[i++];}else{r1[k++]=r[j++];}}if(i<=m){while(i<=m)r1[k++]=r[i++];}else if(j<=e){while(j<=e)r1[k++]=r[j++];}}void MergePass(int r[],int r1[],int n,int h){//一趟排序int i=0;while(i<=n-2*h){Merge(r,r1,i,i+h-1,i+2*h-1);i=i+2*h;}if(i<n-h){Merge(r,r1,i,i+h-1,n-1);}else{for(int s=i;s<n;s++){r1[s]=r[s];}}}void MergeSort(int r[],int r1[],int n){int h=1;while(h<n){MergePass(r,r1,n,h);h=h*2;for(int i=0;i<n;i++){r[i]=r1[i];//更新序列值}}}void main(){int a[7]={8,7,9,4,1,2,3};int b[7];//非递归MergeSort(a,b,7);for(int i=0;i<7;i++){cout<<b[i]<<' ';}system("pause");}
0 0
- 排序算法总结(二)归并法
- 八大排序算法总结之二(简单选择算法,堆排序,归并排序,基数排序)
- 八大排序算法总结之二(简单选择算法,堆排序,归并排序,基数排序)
- 排序算法(二)-- 归并排序
- 排序算法(二):归并排序
- 算法学习(排序二)归并排序
- 排序算法总结(六)归并排序
- 排序算法总结(二)——快速排序、归并排序
- 排序算法二(归并排序、快速排序、希尔排序)
- 算法导论之二归并排序法
- 算法系列(二) 归并排序
- (二)几种排序算法的学习总结(归并排序)
- 排序算法总结(二)-------选择,堆,冒泡,快速,归并排序(java实现)
- 【算法总结】归并排序总结
- 常用排序算法总结(一)----冒泡排序,归并排序
- 算法-排序-归并排序和基数排序(排序总结)
- 二路归并排序算法
- 二路归并排序算法
- 扩展VMware下的centos磁盘
- 怎么深入做用户分析
- 源码包安装后启动失败 error while loading shared libraries: libinotifytools.so.0: cannot open shared object fil
- 物理层与mac层
- 第4章 实现用户页面和文章页面
- 排序算法总结(二)归并法
- ubuntu安装本地nginx.tar.gz文件
- 新的一年
- axis2客户端调用免费的webservice服务的实例之二纯手动调用免费天气预报webservice服务
- JAVA中的接口和抽象类
- awk是命令还是编程语言
- 隐藏导航条底部的黑线(shadowImage)四种办法
- iptables 1.4.10 移植编译
- java 的继承原理