matlab堆排序

原创 2015年07月06日 18:12:27
function [ A ] = heapsort( A )
%UNTITLED14 Summary of this function goes here
%   Detailed explanation goes here
A=build_max_heap(A);
[m,n]=size(A);
for i=n:-1:2
    temp=A(1);
    A(1)=A(i);
    A(i)=temp;
    n=n-1;
    A=max_heapify(A,n,1);
end
end


function [ A ] = build_max_heap( A )
%UNTITLED12 Summary of this function goes here
%   Detailed explanation goes here
[m,n]=size(A);
for i=floor(n/2):-1:1
    A=max_heapify(A,n,i);


end

function [ A ] = max_heapify( A,n,i )
%UNTITLED11 Summary of this function goes here
%   Detailed explanation goes here
l=left(i);
r=right(i);
if l<=n&&A(l)>A(i)
    largest=l;
else
    largest=i;
end
if r<=n&&A(r)>A(largest)
    largest=r;
end
if largest~=i
    temp=A(i);
    A(i)=A(largest);
    A(largest)=temp;
    A=max_heapify(A,n,largest);
end

function [ pIndex ] = parent( i )
%UNTITLED8 Summary of this function goes here
%   Detailed explanation goes here
pIndex=floor(i/2);


end

end

function [ lIndex ] = left( i )
%UNTITLED9 Summary of this function goes here
%   Detailed explanation goes here
lIndex=2*i;


end

function [ rIndex ] = right( i )
%UNTITLED10 Summary of this function goes here
%   Detailed explanation goes here
rIndex=2*i+1;


end


相关文章推荐

【数据结构与算法】内部排序之三:堆排序(含完整源码)

堆排序、快速排序、归并排序(下篇会写这两种排序算法)的平均时间复杂度都为O(n*logn)。要弄清楚堆排序,就要先了解下二叉堆这种数据结构。本文不打算完全讲述二叉堆的所有操作,而是着重讲述堆排序中要用...

堆排序之Java实现

  • 2017年07月27日 17:03
  • 4KB
  • 下载

堆排序法.cpp

  • 2015年07月26日 12:45
  • 2KB
  • 下载

第十五周项目一(6)——堆排序

*Copyright(c)2017,烟台大学计算机与控制工程学院 *All rights reservrd. ...

堆排序及其用途

  • 2016年03月25日 13:46
  • 214KB
  • 下载

堆排序算法c语言实现

  • 2015年10月25日 14:24
  • 2KB
  • 下载

5. 堆,建堆算法,堆排序

堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大...

堆排序

  • 2014年12月25日 21:57
  • 205KB
  • 下载

堆排序算法导论

  • 2013年11月11日 23:54
  • 152KB
  • 下载

C++实现堆、最大堆、最小堆 -- 堆排序插入删除操作

堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左孩子和右孩子节点的值。 最大堆和最小堆是二叉堆的两种形式。 最大堆:根结点的键值是所有堆结点键值中最大者。 最小堆:根结...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:matlab堆排序
举报原因:
原因补充:

(最多只允许输入30个字)