美文网首页
堆排序原理解析

堆排序原理解析

作者: 懒惰的伪善人 | 来源:发表于2020-03-12 15:40 被阅读0次

概述

堆排序时间复杂度为O(nlogn),使用一个数组进行存储。堆分为最大堆与最小堆

最大堆满足的条件

​ A[PARENT(i)]>=A[i]

最小堆满足的条件

​ A[PARENT(i)]<=A[i]

堆是一个数组,可以被看成一个近似的完全二叉树。以(a)二叉树和(b)数组形式展现的一个最大堆。二叉树结点上方的数字是它在数组中相应的下标。

1583993496545.png

A[i] 的左节点为A[2*i]

A[i]的右节点为A[2*i+1]

建立最大堆

在无序数组自底向上建立最大堆,先代码后面有图。

   int []A=new int[];
    int length=A.length();
    //(length/2)+1 是二叉树中最小的叶子节点   叶子节点不需要进行调整
    for(int i=length/2;i>-1;i--){
        adjustMaxTree(A[i],i);
    }
}

adjustMaxTree(int value,int index){
//如果 该节点为叶子节点则不需要调整
if(index>A.length()/2)
    return ;
  int largest=value;
  //如果左子节点大于A[index] 则值交换,并对左节点进行调整
  if(largest<A[index*2]){
      largest=A[index*2];
      A[index*2]=A[index];
      A[index]=largest;
      adjustMaxTree(A[index*2],index*2);
  }
    //如果右子节点大于A[index] 则值交换,并对右节点进行调整
 
   if(largest<A[index*2+1]){
      largest=A[index*2+1];
      A[index*2+1]=A[index];
      A[index]=largest;
       adjustMaxTree(A[index*2+1],index*2+1);
      
  }
    
}

1583995395983.png

堆排序

在之前我们为数组A建立好了 最大堆


1583997261328.png

建好后的据图f得最大堆的数组为


1583997513464.png

这时16已经是最大值了,将16 去除后得数组为

1583997623821.png

在对该数组建立最大堆,建好最大堆后将根节点取出再建立最大堆,多次建立最大堆,数组排序成功

相关文章

  • JS实现堆排序

    原理 堆排序原理 实现 说明 堆排序对大文件很有效 堆排序是不稳定排序

  • 堆排序原理解析

    概述 堆排序时间复杂度为O(nlogn),使用一个数组进行存储。堆分为最大堆与最小堆 最大堆满足的条件 ​ ...

  • 堆排序原理以及代码解析

    前言 堆排序是排序算法的一种,相对来说较难理解,本文分析了堆排序的原理,并且剖析了源码。 堆定义 堆是具有以下性质...

  • python实现堆排序(HeapSort)

    python实现【堆排序】(HeapSort) 算法原理及介绍 堆排序(Heapsort)是指利用堆这种数据结构所...

  • JavaScript - 排序算法 - 堆排序

    特点: 时间复杂度:O(nlog2n) 堆排序是不稳定的排序算法 原理: 利用大顶堆排序(升序) 利用小顶堆排序(...

  • 排序算法之5:堆排序 HeapSort

    研究了半天,一步一步试验DEBU,才明白堆排序的原理,整理记录一下;相关参考:排序算法之堆排序(Heapsort)...

  • 学习资料汇总

    GeoHash核心原理解析 GeoHash算法学习讲解、解析及原理分析

  • 排序学习 - 为了面对算法面试(4)

    排序学习 - 为了面对算法面试(3) -快速排序 6.堆排序: 堆排序是利用堆的性质进行的一种选择排序方法原理:1...

  • 堆排序问题

    堆排序问题 最近回顾算法,看了一下堆排序的原理,有点小疑问,求大神解答。 具体问题如下:以升序为例,我们需要构建一...

  • 堆排序算法解析

    转载:http://blog.csdn.net/xiaoxiaoxuewen/article/details/75...

网友评论

      本文标题:堆排序原理解析

      本文链接:https://www.haomeiwen.com/subject/pnrpjhtx.html