i guess it has to do something with "min" and "max" functions...
for example:
A = [2 3 4 5; 6 9 1 5]; %%% "A" can be of any size %%%
%%% B = sorted A %%% min(A) = [2 3 1 5]; %%% 1st unsorted row of B %%% max(A) = [6 9 4 5]; %%% 2nd unsorted row of B %%%
now i've to sort the rows...
any idea?
No products are associated with this question.
If you don't want to use sort() then you can write your own sorting algorithm. Like this one (untested):
function B = mysortfunc(A)
if size(A,1)*size(A,2)~=length(A)
errordlg('enter a vector');
return
end
if size(A,2)~=1
A=A';
endrem_A = A;
for j=1:length(A) [value,index] = min(rem_A); B(j) = value;
if index>1 A1 = rem_A(1:index-1); else A1=[]; end
if index<length(rem_A) A2 = rem_A(index+1:end); else A2 = []; end
rem_A = [A1 , A2]
end
A simplification of your method with pre-allocation:
function B = mysortfunc(A) A = A(:); B = zeros(1, numel(A)); for ii = 1:numel(A) [value, index] = min(A); B(ii) = value; A(index) = NaN; end
However, the scientists have developped much better sorting methods in the last 1000 years. I do not assume that a teacher would be happy to see such a brute-force approach. Therefore I dare to publish this, although it solves a homework question, because submitting it as "solution" is a bad idea.
I'm convinced, that even the scroll of parchment in the Egypt libraries have been sorted with smarter methods 5000 years ago, but I cannot find any resources to prove this.
The optimal sorting machine is still the SFL (spaghetti fork lifter): Cut spaghetti noodles according to the values to be sorted. Lift them up and push them against a wall. The processing time does not depend on the number of elements and even the pre-processing is only O(n).
Simple Solution A = [2 3 4 5; 6 9 1 5]
A =
2 3 4 5
6 9 1 5>> sort(min(A))
ans =
1 2 3 5
You used 'sort' which he specifically requested not to be used, and he also specified that A could be any size.
2 Comments
Direct link to this comment:
http://mathworks.com/matlabcentral/answers/55823#comment_115562
Lots of ideas on this at
http://en.wikipedia.org/wiki/Sorting_algorithm
Direct link to this comment:
http://mathworks.com/matlabcentral/answers/55823#comment_115577
Matrix A you are providing only has 1 row. How can B have more than 1 row?