分而治之和快速排序

分而治之

分而治之(D&C)是一种解决问题的思路,是一种运用递归来解决问题的方法。

使用D&C解决问题的过程包括两个步骤。

  1. 找出基线条件,这种条件必须尽可能简单。

  2. 不断将问题分解(或者说缩小规模),直到符合基线条件。

快速排序

快速排序是一种运用了D&C思路的排序算法。按照D&C的思路,需要先找到基线条件,再不断分解问题,通过递归解决问题。

基线条件

对一个数组进行排序时,当数组为空或只包含一个元素,就只需返回原数组,不再需要排序。这也是快速排序的基线条件。

工作原理

进行快速排序时,需要先选择一个元素作为基准值,然后将其他元素和基准值进行比较,分出比基准值小的一个数组,和比基准值大的一个数组。然后把问题分解,缩小规模,对分出的两个子数组,再重复做同样的操作,选择基准值,分解为一个比基准值小的数组,和一个比基准值大的数组。直到符合基线条件 —— 数组为空或只包含一个元素。

这样每个子数组都被处理为 [比基准值小的元素] [基准值] [比基准值大的元素]的形式,通过递归处理,最终完成对整个数组的排序。

快速排序可以总结为3个步骤。

  1. 选择基准值。

  2. 将数组分成两个子数组:小于基准值的元素和大于基准值的元素。

  3. 对这两个子数组进行快速排序,重复这样的操作,通过递归完成排序。


转载自:分而治之和快速排序 - 移动云开发者社区

来源:移动云官网开发者社区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值