matlab 堆排序求解答


%假设已经有堆结点A(1),A(2),...,A(n)
%输出A(i)的有序序列
for i= n:-1:2
%输出A(i)
disp(A(i));
    %将A(i)移到堆的根节点
    A(1)=A(i);
    %删除A(i)
    A(i)=[];
    %重构堆
    j=1;
    while 2*j <= i-1
        k= 2*j;
        if k+1 <= i-1 && A(k+1) > A(k)
            k =k+1;
        end
        if A(j) < A(k)
            temp = A(j);
            A(j) = A(k);
            A(k) = temp;
            j=k;
        else
            break;
        end
    end
end
%输出A(1)
disp(A(1));

这个怎么堆排序怎么弄