Matlab带比较方法的快排

首先是主方法QUCIKSORT:(从小到大排列)

function [A]=QUICKSORT(A,Low,high,mdat)
set(0,'RecursionLimit',1000)
if Low<high
    [A,w]=SPLITION2(A,Low,high,mdat);
    A=QUICKSORT(A,Low,w-1,mdat);
    A=QUICKSORT(A,w+1,high,mdat);
end

function [A,w]=SPLITION2(A,Low,high,mdat)
i=Low;
x=A(1,Low);
for j=Low+1:high
    %if A(1,j)<=x
    if cmpbig(A(1,j),x) == 1
        i=i+1;
        if i~=j;
            k=A(1,i);
            A(1,i)=A(1,j);
            A(1,j)=k;
            clear k;
        end
    end
end
k=A(1,i);
A(1,i)=A(1,Low);
A(1,Low)=k;
clear k;
w=i;

而后,只需要再写一个cmpbig方法来完成两个量之间的比较大小功能即可。

猜你喜欢

转载自www.cnblogs.com/zinyy/p/9139140.html
今日推荐