合并排序的c++实现

本文介绍了如何使用递归在C++中实现合并排序。通过将无序数组拆分为两半,递归地对每半进行排序,然后利用Merge函数将两个已排序的子数组合并回原数组,从而达到整体排序的目的。
摘要由CSDN通过智能技术生成

用递归实现合并排序

基本思路:定义Merge函数:输入三个数组,把前两个有序数组按照大小顺序输入到第三个数组中去。

                   定义Mergesort函数:输入一个无序数组,把它分成两半,递归的对每一半做Mergsort处理,这样这两半数组已经有序,再用Merge函数合并这两个数组到原无序数 组中去。

伪代码:

Merge(B[0..p − 1], C[0..q − 1], A[0..p + q − 1])
//Merges two sorted arrays into one sorted array
//Input: Arrays B[0..p − 1]and C[0..q − 1]both sorted
//Output: Sorted array A[0..p + q − 1]of the elements of B and C
 i ← 0; j ← 0; k ← 0
while i < p and j < q do
   if B[i]≤ C[j]
       A[k]← B[i]; i ← i + 1
   else A[k]← C[j]; j ← j + 1
       k ← k + 1
if i = p
   copy C[j..q − 1]to A[k..p + q − 1]
   else copy B[i..p − 1]to A[k..p + q − 1]



 
Mergesort(A[0..n − 1])
//Sorts array A[0..n − 1]by recursive mergesort
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值