MATLAB Answers

How to look at the source code for MATLAB's built-in sort function?

692 views (last 30 days)
Joe
Joe on 1 May 2013
Commented: Walter Roberson on 30 Sep 2020
I need to find the big O runtime for MATLAB's built-in sort function, but I'm not quite sure how to if I don't even know how the function is coded. Is there some way to look at the code for the function because I know for some built-in functions you are able to look at the source code.

Answers (4)

Jonathan Epperl
Jonathan Epperl on 1 May 2013
If the source code is available, then
edit sort
will do the job. I can't check right now, but you go ahead and try that.

Walter Roberson
Walter Roberson on 1 May 2013
Edited: Walter Roberson on 1 May 2013
To look at the source code, get a job or internship with Mathworks.
sort() is a built-in; you cannot "edit sort" to look at it.
There are a number of routines for which MATLAB calls into LAPACK or BLAS when the arrays are large enough to make it worth the overhead. I do not know if sort() is one of those. If it is, then the LAPACK sort algorithm is at http://www.netlib.org/lapack/explore-html/de/de5/slasrt_8f_source.html
I have doubts about that being the appropriate routine, as it appears to only support a single data-type.

Muhammad Ahsan  Zahid
Muhammad Ahsan Zahid on 14 Apr 2020
Edited: Muhammad Ahsan Zahid on 14 Apr 2020
If you want to see the sourcee code behind the function, open the function as:
open function_name.m
Example
open rand.m
If available it will show you.
  3 Comments
Walter Roberson
Walter Roberson on 30 Sep 2020
built-in (/Applications/MATLAB_R2020a.app/toolbox/matlab/datafun/@double/sort) % double method
edit sort will show you only documentation, unless you specifically open, for example, toolbox/matlab/datatypes/categorical/@categorical/sort.m .
But even that one does its work by using categoricalsort which is matlab.internal.categoricalUtils.categoricalsort.categoricalsort which is a build-in method.

Sign in to comment.


Chien-Han Su
Chien-Han Su on 21 Dec 2019
I'm not sure whether this is what you need, I would recommend you to record (by tic and toc) and analyze the exceution time to find the Big-O since you can't not get the source code of built-in function, like this
iterStart = 10; % drop the first ten iterate
iterNum = 1000;
N = 1000;
t = zeros(iterNum,N);
for m = iterStart:iterNum
for n = 1:N
a = rand(1,n);
tic;
b = sort(a);
t(m,n) = toc;
end
end
tAvg = mean(t,1);
tAvg = tAvg/tAvg(1); % normalize
plot(1:N,tAvg)
xlabel('n');
ylabel('Normalized Time')
title('Normalized Execution Time for Sorting a Vector');
and you will get
How_to_look_at_the_source_code_for_MATLAB_built_in_sort_function.jpg

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by