美文网首页前端学习
堆排序伪代码

堆排序伪代码

作者: 本来无一物_f1f2 | 来源:发表于2018-12-14 19:29 被阅读0次
//建堆,运行时间的界T(n) =O(N)
BuildHeap(A)
        n = length(A)
        for  i = n/2 downto 1  do   //从非叶子节点开始,自底往上,使A变成最大堆
               Max_Heapify(A, i, n)
end
//调整为最大堆 ,T(n) = O(lgn)
Max_Heapify(A,idx,max) //idx:数组开始的下标,max:最大的数组下标
    left = 2*idx
    right = 2*idx
    if(left<max and A[left]>A[idx]) then
        largest = left
    else
        largest = idx
    if(right < max and A[right]>A[largest]) then
        largest = ritht  
    if(largest != idx) then
        exchange A[largest] with A[idx]
        Max_Heapify(A,largest,max) //交换位置后,还需要调整它的子树
end
HeapSort(A)
      BuildHeap(A)
      for i = length(A) downto 2   do 
             exchange  A[1] with A[i] //把最大堆根节点与最后一个互换
             Max_Heapify(A,1, i-1) //把交互后的排除在堆之外,重新从1到i-1,调整堆
end

相关文章

  • 堆排序伪代码

  • 常见排序算法

    912. 排序数组 1.冒泡 1.想法 2.伪代码 3.代码 2.快排 1.想法 2.伪代码 3.代码 3.堆排序...

  • 堆排序---基础篇

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

  • 算法导论第6.4章 - 堆排序算法

    伪代码利用了维护堆和建立堆的部分 堆排序 建立堆 维护堆的性质 在建立好的堆里面,根部的元素是最大的,然后把这个最...

  • 14.排序算法(5)

    1.堆排序介绍 2. 代码实现

  • 堆排序代码

    include //array是待调整的堆数组,i是待调整的数组元素的位置,nlength是数...

  • 数据结构笔记-队列

    队列 Queue 一、存储 伪代码 C语言实例(部分代码) 二、操作 1.入队 伪代码 2.出队 伪代码

  • 算法导论第2.1章 - 算法基础 (伪代码和循环不变式)

    伪代码 什么是伪代码?本书用伪代码来书写程序,使用清晰简洁的方式来说明给定的算法。类似我们常用的程序语言。伪代码的...

  • 数据结构笔记-栈

    栈 Stack 一、存储 伪代码 C语言实例(部分代码) 二、操作 1.入栈 伪代码 2.出栈 伪代码

  • 堆排序

    概述 堆排序基于完全二叉树进行排序, 稳定性 堆排序不稳定 时间复杂度 堆排序的时间复杂度为 nlogn C代码

网友评论

    本文标题:堆排序伪代码

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