博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
归并排序
阅读量:5905 次
发布时间:2019-06-19

本文共 1815 字,大约阅读时间需要 6 分钟。

归并排序具有递归和非递归两种方式:

递归的归并排序代码如下:

1 #include 
2 #include
3 #include
4 using namespace std; 5 //合并排序的前期判断,将不符合归并排序的数组进行筛除, 6 //申请归并排序的辅助数组空间 7 void MergeSort(int *p, int n) 8 { 9 void Msort(int *p, int *temp,int left, int right);10 if(n <= 0 || p == NULL)11 return;12 int *temp = new int[n];13 if(temp == NULL)14 return;15 Msort(p, temp, 0, n-1);16 delete [] temp;17 }18 //递归形式的合并排序19 void Msort(int *p, int *temp, int left, int right)20 {21 void Merge(int *, int *, int, int, int);22 if(left < right)23 {24 int leftend = (left + right) / 2;25 int rightbegin = leftend + 1;26 Msort(p, temp, left, leftend);27 Msort(p, temp, rightbegin, right);28 Merge(p, temp,left, rightbegin, right);29 }30 }31 //将数组中指定长度的两段,按照一定大小进行合并。32 void Merge(int *p, int *temp, int left, int rightbegin, int right)33 {34 int TempArray = rightbegin;35 int pos = left;36 int begin = left;37 while(left < TempArray && rightbegin <= right)38 {39 if(p[left] <= p[rightbegin])40 temp[pos++] = p[left++];41 else42 temp[pos++] = p[rightbegin++];43 }44 while(left < TempArray)45 temp[pos++] = p[left++];46 while(rightbegin <= right)47 temp[pos++] = p[rightbegin++];48 while(pos-- >= begin)49 p[pos] = temp[pos];50 }51 52 int main()53 {54 //测试55 int num = 9;56 int *p = new int[num];57 for(int i = 0; i < num; i++)58 p[i] = 10 - i;59 for(int i = 0; i < num; i++)60 cout << p[i] << endl;61 MergeSort(p,num);62 for(int i = 0; i < num; i++)63 cout << p[i] << endl;64 return 0;65 }

 

 

转载于:https://www.cnblogs.com/wyqx/archive/2013/05/04/3059895.html

你可能感兴趣的文章
Bash 什么时候会给 HOME 赋初始值
查看>>
POJ 3522 Slim Span 最小差值生成树
查看>>
[AlwaysOn Availability Groups]DMV和系统目录视图
查看>>
nginx js、css多个请求合并为一个请求(concat模块)
查看>>
Java系列:《Java核心技术 卷一》学习笔记,chapter11 记录日志
查看>>
python --装饰器
查看>>
zoj 1008 Gnome Tetravex
查看>>
fusionchart实现ZoomLine 资源 破解版 出口能力
查看>>
Art-Directing SVG图像viewBox属性
查看>>
Java面试题:Servlet是线程安全的吗?
查看>>
HDU 4932 贪心
查看>>
apache开源项目-- Velocity
查看>>
[读书笔记]C#学习笔记一: .Net Framwork
查看>>
Fiddler工具的基本功能(转)
查看>>
使用 InstallShield limited edition 打包部署Outlook 2013 Office add-in插件
查看>>
@CentOS环境下Java开发环境的搭建
查看>>
关于云与持续集成杂谈
查看>>
Centos7 修改硬件时间和系统时间
查看>>
Selected SVN connector library is not available or cannot be loaded
查看>>
C# ComboBox自动完成功能的示例
查看>>