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

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

归并排序实现

归并排序,分治法,将一个无序的数组,不断二分,对两边数组进行排序,在通过递归的方式,将两个排过序的数组合并(关键)。

当子数组只有一个值时,即可进行合并。

代码如下:

#include 
using namespace std;const int MAXN = 100;int A[MAXN] = {0,5,2,4,7,1,3,2,6};void Megre(int p,int q,int r){ int b[r-p+1]; int c[r-p+1]; int i = 1; int j = 1; int w; w = 1; for (int x = p;x<=q;x++) b[w++] = A[x]; w = 1; for (int x = q+1;x<=r;x++) c[w++] = A[x]; w = p; while (w <= r) { if (j > r-q||(b[i] < c[j]&&i <= q-p+1)) { A[w] = b[i]; i++; } else { A[w] = c[j]; j++; } w++; }}void Megre_sort(int p,int r){ if (p < r) { int q = (p + r) / 2; Megre_sort(p, q); Megre_sort(q + 1, r); Megre(p, q, r); }}int main(){ Megre_sort(1,8); for (int i = 1;i<=8;i++) printf("%d ",A[i]); printf("\n"); return 0;}

  

转载于:https://www.cnblogs.com/YDDDD/p/10286578.html

你可能感兴趣的文章
同步,异步,阻塞,非阻塞
查看>>
文件缓存
查看>>
bash Shell 中如何实现条件判断之if判断
查看>>
linux守护进程解读
查看>>
Windows操作系统单文件夹下到底能存放多少文件及单文件的最大容量
查看>>
POJ2079:Triangle——题解
查看>>
关于UITableView 不能回调 tableView: cellForRowAtIndexPath的问题
查看>>
linux 批量创建用户获取8位随机密码
查看>>
WPF 单实例应用程序
查看>>
解决wordpress无法发送邮件的问题|配置好WP-Mail-SMTP的前提
查看>>
debian包之间的关系
查看>>
php生成随机数mt_rand和rand
查看>>
04.Linux Disk Partition & Mount Point
查看>>
ios系统的特点
查看>>
mac下配置java运行环境
查看>>
gsoap、c++。webservice的client。
查看>>
java中sleep()和wait()的区别
查看>>
[JAVA]UUID
查看>>
Win10优化
查看>>
【洛谷P1352】没有上司的舞会
查看>>