算法 - 归并排序

归并排序是一种基于分治法的排序算法,通过分解、解决和合并三个步骤实现。本文介绍了归并排序的原理,并提供了两个有序序列合并以及一组数据排序的代码实现,讨论了算法的效率和分析方法。
摘要由CSDN通过智能技术生成

介绍

归并排序:归并字面意思“回归 ”“合并 ”,把有序的两个或者多个序列合并为一个序列。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。那么什么是分治法呢?

分治法

分治法:将原问题分解为几个规模较小但类似于原问题的子问题,递归的求解这些子问题,然后在合并这些子问题的解来建立原问题的解。

分治模式在每层递归都有三个步骤:

  • 分解:把原问题分解若干子问题;
  • 解决:把若干子问题解决;
  • 合并:把若干问题的解合并。

归并分析

归并排序的核心思想采用分治法。我们通过一个例子来深入的认识。比如现在有一组数 [30, 55, 65, 40, 25, 80, 26, 35],对这些数通过分治法的思想解决排序,遵循三个原则:

  • 分解:把需要排序的一组数分解为若干序列,例如[30, 55] , [65, 40] ……;
  • 解决:把分解的若干序列按照规则排序,例如从小到大:[30, 55] , [40 65]……;
  • 合并:在把若干有序子序列合并为一组数,就完成我们的排序。

下面我们将通过图解来理解这个过程:

代码实现

实现归并排序,这里分为两步,方便理解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值