[Matlab]Ordinamento vettore

Luc@s
% ordina un vettore dal più piccolo elemento in sù
function ord = ordina(x)
    
    n = size(x,1);
    xnew = zeros(n,1);
    
    for i=1:n       % i mi va da 1 a n x=(--->)
        for j=i:n   % j mi va da i a n x=(... i-->)
            if x(i) == min(x(j:1:end))  
                xnew(j) = x(i); % xnew=(x(i), .., x(i),..) 
            end
        end  
    % controllo se ha lavorato
    if x == xnew
        warning('on','Non ho fatto nulla!!')
    end 
    
    end 
        
    ord=xnew;
    
end


Credo il problema sia qui min(x(j:1:end)) ma non capisco come fare...

Risposte
Luc@s
ho risolto con un simil bubble-sort..

% ordina un vettore dal più piccolo elemento in sù
function ord = ordina(x)
    
    % -- Dichiarazioni --
    n = size(x,1);
    % ----
    
    for i=1:n     
        for j=1:n-1  
            if x(j) > x(j+1)
                temp = x(j);
                x(j) = x(j+1);
                x(j+1) = temp;
            end
        end  
    end
    % ---- 
    % restituisco e esco
    ord=x;  
end

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.