您当前的位置: 首页 >  matlab

slandarer

暂无认证

  • 1浏览

    0关注

    248博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

matlab 堆排序

slandarer 发布时间:2019-09-18 23:42:05 ,浏览量:1

使用matlab写了一下简单的堆排序:

function pilesort
vetor=randi(20000,[1,10000]);
tic
len=length(vetor);
layer_num=floor(log(len)/log(2));
for i=layer_num:-1:1
    for j=1:2^(layer_num-1)
        point=[i,j];
        bool=changevector(point);
        leaves=getleaf(point);
        while(bool)            
            point=leaves(bool,:);
            leaves=getleaf(point);
            bool=changevector(point);

        end
    end
    
end
disp(vetor)
newsort=pile_sort_out();
disp(newsort)
    function newsort=pile_sort_out(~,~)
        turn=1;
        newsort=zeros(1,len);
        while(len>1)
            newsort(turn)=vetor(1);
            vetor(1)=vetor(end);
            vetor(end)=[];
            len=len-1;
            point=[1,1];
            bool=changevector(point);
            leaves=getleaf(point);
            while(bool)            
                point=leaves(bool,:);
                leaves=getleaf(point);
                bool=changevector(point);

            end
            turn=turn+1;
            
        end
        newsort(turn)=vetor(1);
    end
    function bool=changevector(point)
        leaves=getleaf(point);
        thepoint=two2one(point);
        theleaves=[two2one(leaves(1,:));two2one(leaves(2,:))];
        control=(theleaves            
关注
打赏
1664692598
查看更多评论
0.0374s