Hello, I need to write a function that merge two sorted vectors to one sorted vector that containes all the values.
My code is:
vec1= input('enter vec1\n');
vec2= input('enter vec2\n');
vec1=sort(vec1)
vec2=sort(vec2)
function [res]=merge(vec1, vec2)
n1=length(vec1);
n2=length(vec2);
n=n1+n2;
res=zeros(n, 1);
if n1==0
res=vec2;
elseif n2==0
res=vec1; else
i1=1; i2=1;
end
for j=1:n
if i1>n1
res(j)=vec2(i2);
i2=i2+1;
elseif i2>n2 res(j)=vec(i1); i1=i1+1;
elseif vec(i1)<vec(i2) res(j)=vec(i1); i1=i1+1; else res(j)=vec2(i2); i2=i2+1; endendend
My questions are: Is my code right and how can I call the new function that I created? (I saved the file named 'merge' in a function file).
Best Answer
If you simply want to join two sorted vectors you can use
but this seems improbable to me since joining two sorted vectors like this may not be very useful. The second possibility is, you also want to sort the result, you can do that as
In this second case, you don't even need to run
because the command I mentioned will sort both of them together.
In either case, no need to write your own merge function. You can use MATLAB builtin function to reach same results.