Para continuar nosso estudo sobre complexidade, consideremos
o problema de ordenar um vetor, i.e. dado o vetor v(1:n), não ordenado, produzir o
vetor w(1:n) contendo os mesmos elementos de v |
w(1) <= w(2) <= ... <= w(n).
function w= bubbles(v)
%*** alg da bolha para ordenacao ***
n = length(v)
for i=2:n
j=i;
vj=v(j);
vjm=v(j-1)
while( j>1 & vj>vjm )
v(j)=vjm;
v(j-1)=vj;
j=j-1;
vj=v(j);
vjm=v(j-1);
end
end
w=v;
%*************************************
function x = merge(v,w)
% merge( , ) junta os elementos de dois vetores
% v e w ja ordenados, em um novo vetor ordenado x
nv = length(v);
nw = length(w);
nx = nv+nw;
x = zeros(1,nx);
jv=1; jw=1; jx=1;
while ( jx <= nx )
if ( jv > nv )
x(jx) = w(jw);
jw = jw+1;
jx = jx+1;
elseif ( jw > nw )
x(jx) = v(jv);
jv = jv+1;
jx = jx+1;
elseif ( v(jv) <= w(jw) )
x(jx) = v(jv);
jv = jv+1;
jx = jx+1;
else
x(jx) = w(jw);
jw = jw+1;
jx = jx+1;
end
end
%****************************