[数据结构]--关于排序算法的一些参考

推荐网站

最近在复习到数据结构书的时候感觉书上将排序算法的时候不是很清楚,故去找了一些博客,下面放一个我比较喜欢的。

http://bubkoo.com/2014/01/17/sort-algorithm/archives/

打开的界面是这样的

网站内容

界面也是很干净。

下面我就用文字简单介绍一些堆排序和快速排序,内容也是来自上面的网站的,方便我快速回忆。

堆排序

堆排序就是把最大堆堆顶的最大数取出,将剩余的堆继续调整为最大堆,再次将堆顶的最大数取出,这个过程持续到剩余数只有一个时结束。

在堆中定义以下几种操作:
最大堆调整(Max-Heapify):将堆的末端子节点作调整,使得子节点永远小于父节点
创建最大堆(Build-Max-Heap):将堆所有数据重新排序,使其成为最大堆
堆排序(Heap-Sort):移除位在第一个数据的根节点,并做最大堆调整的递归运算

快速排序

快速排序用到分治法。

分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。

利用分治法可将快速排序的分为三步:
1. 在数据集之中,选择一个元素作为” 基准”(pivot)。
2. 所有小于” 基准” 的元素,都移到” 基准” 的左边;所有大于” 基准” 的元素,都移到” 基准” 的右边。这个操作称为分区 (partition) 操作,分区操作结束后,基准元素所处的位置就是最终排序后它的位置。
3. 对” 基准” 左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。

以上,所有
2017 / 08 / 07

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值