美文网首页
Java排序算法分析与实现(6)------堆排序

Java排序算法分析与实现(6)------堆排序

作者: 咖啡少年不加糖whm | 来源:发表于2019-10-09 10:51 被阅读0次

一、原理

堆排序是指利用堆这种数据结构所设计的一个中排序算法。堆积是一个近似完全二叉树结构,并同时满足堆积的性质:即子节点的健值或索引总是小于或大于它的父节点

(1)将初始待排序关键字序列(R1,R2...,Rn)构建成大顶堆,此堆为初始的无序区
(2)将堆顶元素R[1]与最后一个元素R[n]交换,此时得到新的无序区(R1,R2,...Rn-1)和新的有序区(Rn),且满足R[1,2,...n-1]<=R[n];
(3)由于交换后新的堆顶R[1]可能违反堆的性质,因此需要对当前无序区(R1,R2,...Rn-1)调整为新堆,然后再次将R[1]与无序区最后一个元素交换,得到新的无序元素(R1,R2,...Rn-2)和新的有序区(Rn-1, Rn)。不断重复此过程知道有序区的元素个数为n-1,则整个排序过程完成

最佳情况:T(n) = O(n * log n)     最差情况: T(n) = O(n * log n),   平均情况: T(n) = O(n * log n)

二、代码实现

相关文章

  • 排序

    八大排序算法 一、归并排序 递归及非递归的JAVA实现 二、快速排序 快排算法JAVA实现 三、堆排序 堆排序堆排...

  • 排序算法-堆排序

    参考: Java排序算法(五):堆排序 【算法与数据结构】图说堆排序 【数据结构】排序算法:希尔、归并、快速、堆排...

  • Java排序算法分析与实现(6)------堆排序

    一、原理 堆排序是指利用堆这种数据结构所设计的一个中排序算法。堆积是一个近似完全二叉树结构,并同时满足堆积的性质:...

  • 堆排序---基础篇

    本文主要介绍堆排序的一些基本过程和分析。 大纲 堆排序简介 堆排序代码实现 1. 堆排序简介 1.1 堆排序的存储...

  • Java实现各种常用的排序算法

    Java实现各种常用的排序算法,包括:冒泡排序、插入排序、二分排序、选择排序、希尔排序、堆排序、快速排序(两种写法...

  • 算法与数据结构(六):堆排序

    title: 算法与数据结构(六):堆排序tags: [算法与数据结构, C语言, 堆排序]date: 2019-...

  • 3.2-选择排序-堆排序

    参考链接 选择排序:堆排序(Heap Sort) 白话经典算法系列之七 堆与堆排序 堆排序与快速排序,归并排序一样...

  • 数据结构

    Q:堆排序 A:1 堆排序算法(图解详细流程)2 堆排序 Q:排序算法时间复杂度与稳定性 选择排序为什么不稳定:举...

  • iOS算法总结-堆排序

    iOS算法总结-堆排序 iOS算法总结-堆排序

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

网友评论

      本文标题:Java排序算法分析与实现(6)------堆排序

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