分治算法之合并排序

举报
chenyu 发表于 2021/07/26 23:34:50 2021/07/26
【摘要】 1、问题 合并排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列     2、思路 1、分解:将待排序元素分成大小大致相同的两个子序列 2、治理:对两个子序列进行合并排序 3、合并:将排好序的有序子序列进行合并,得到最终的有序序列  ...

1、问题

合并排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列

 

 

2、思路

1、分解:将待排序元素分成大小大致相同的两个子序列

2、治理:对两个子序列进行合并排序

3、合并:将排好序的有序子序列进行合并,得到最终的有序序列

 

 

 

3、代码实现


  
  1. #include <iostream>
  2. using namespace std;
  3. #define length 500
  4. //合并的辅助函数
  5. void merge(int *data, int low, int mid, int high)
  6. {
  7. std::cout << "merge low is" << low << " mid is:" << mid << " high is" << high << std::endl;
  8. int newLength = high - low + 1;
  9. int *newData = new int[newLength];
  10. int i = low, j = mid + 1, k = 0;
  11. //分解2个数组,并且合并完其中的一个数组
  12. while (i

文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/79588092

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。