堆排序和快速排序

比较排序:插入排序、合并排序、快速排序和堆排序都是通过比较的方法进行排序,其中合并排序和堆排序的时间是nlgn;还有其他的排序方法,包括基数排序法、桶排序法。堆排序算法使用到堆数据结构,堆数据结构是一种数组对象,可以被视为一棵完全二叉树,数中每个节点与数组中存放该节点的值的那个元素对应,每层都被填满,最后一层可能除外。表示堆的数组结构有两个属性,length[A]是数组中元素个数,heap-size[A]表示存放在A中的堆元素个数,有如下性值 heap-size[A] <= length[A]
摘要由CSDN通过智能技术生成

比较排序:插入排序、合并排序、快速排序和堆排序都是通过比较的方法进行排序,其中合并排序和堆排序的时间是nlgn;还有其他的排序方法,包括
基数排序法、桶排序法。
堆排序算法使用到堆数据结构,堆数据结构是一种数组对象,可以被视为一棵完全二叉树,数中每个节点与数组中存放该节点的值的那个元素对应,
每层都被填满,最后一层可能除外。表示堆的数组结构有两个属性,length[A]是数组中元素个数,heap-size[A]表示存放在A中的堆元素个数,有
如下性值 heap-size[A] <= length[A]; 数的根是A[1],给定某个节点的下标i,其parent的下标parent[i]=i>>2;它的左子节点left[i]=i<<2
右子节点right[i]=i<<2+1。二叉堆有两种类型,分别是最大堆和最小堆,在这两种堆中,节点内的数值都满足堆特性。在最大堆中,除了根节点
以外的所有节点,满足A[parent[i]]>=A[i],即某个子节点的至多和其父节点的值一样大;最小堆则刚好相反,A[parent[i]]<=A[i]。在堆排序中,
使用的是最大堆,最小堆经常在构造优先队列中使用。

下面介绍5的过程以及它们在堆排序和构造有先队列中是如何使用的。
MAX-HEAPIFY
    是对最大堆进行操作的重要的子程序,输入为一个数组A和下标i,当MAX-HEAPIFY过程被调用时,我们假定了left[i]和right[i]为根的两个二叉树都是最大堆。
    这时A[i]可能小于其子节点,所以违反了最大堆的性值。MAX-HEAPIFY让元素A[i]在最大堆中下降&#x

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值