基础算法(三)---堆排序(Java)
2017-05-02 08:15
197 查看
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。
堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
堆排序的平均时间复杂度为Ο(nlogn) 。
算法步骤:
创建一个堆H[0..n-1]
把堆首(最大值)和堆尾互换
把堆的尺寸缩小1,并调用shift_down(0),目的是把新的数组顶端数据调整到相应位置
重复步骤2,直到堆的尺寸为1
堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
堆排序的平均时间复杂度为Ο(nlogn) 。
算法步骤:
创建一个堆H[0..n-1]
把堆首(最大值)和堆尾互换
把堆的尺寸缩小1,并调用shift_down(0),目的是把新的数组顶端数据调整到相应位置
重复步骤2,直到堆的尺寸为1
相关文章推荐
- 中国年历算法和程式-Java基础-Java-编程开发
- java基础知识记录--算法与编程(摘自张孝祥整理java面试题)
- [转]Java基础算法集50题
- java 算法基础之四堆排序法
- 基本算法-堆排序及其Java实现
- java 算法基础之一寻找最大公约数
- java中的排序算法——简单选择排序,树形选择排序与堆排序(一)
- java 算法基础之二快速排序算法
- 基础算法系列(六)——堆排序
- Java基础部分-数组和简单算法
- Java 算法基础 -递归
- Java基础之两个小算法
- java 算法基础之三合并排序法
- 一步一步复习数据结构和算法基础-堆排序
- java基础算法
- Java基础之两个小算法
- 排序基础算法汇总-java实现
- java 算法基础之六插入排序与冒泡排序
- 安迪的找工作日志——算法基础学习之堆排序
- 『JAVA基础』朋友的需求,关于一个算法