I am in the habit of using nested for loops to sort arrays. I suspect there are methods that are much simpler and don't require as much debugging.
The following is an example from a Cody problem. The function is to sort elements of vector a by their distance from number t. The name of the problem was "target sorting". Elements that are closest to t will be nearest the end of the vector. Elements that are farther from t will be nearest the beginning of the vector. Here is a link to the problem.
And here is my code:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% Code %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function b = targetSort(a,t)
b = [];for( i=1 : numel(a) ) shell = abs( t-a(i) ) if( numel(b) == 0) b = [a(i)] else for( j=1: numel(b) ) if( shell > (abs(t - b(1))) ) b = [a(i) b] break end k = j+1 if( j==numel(b) ) b = [b a(i)] elseif( ... and( ... ( shell <= abs(t - b(j )) ), ... ( shell >= abs(t - b(k)) ) ... )... ) b = [b(1:j) a(i) b(k:end ) ] break end end end end end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Best Answer