归并排序

二路递归式归并排序(基本上分为两个版本,此篇为其中一个版本):
举例:对下面的七个数归并排序
1, 5, 1, 7, 11, 10, 9
程序按照下图运行。
程序中需要注意的几个关键语句:

  • merge(b,a,begin,end,mid);//传过去的顺序是b,a,
    而函数merge(int* a,int* b,int begin,int end,int mid)
    因为: mergesort中的if语句
    if(begin==end)
    {
    b[begin]=a[begin];
    }
    b中存的是要进行排序的数

  • int k=i;//在函数merge( )中

  • for(int l=0;l<7;l++)//merge( )中
    a[l]=b[l];

按照程序运行
1. 分,mergesort(a,b,begin,mid);
mergesort(a,b,mid+1,end);
2. 治(排序、合并) merge(b,a,begin,end,mid);


# include< iostream>
using namespace std;

void merge(int* a,int* b,int begin,int end,int mid)
{

int i=begin;
int j=mid+1;

int k=i;
while(i
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值