Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript native sort method code

Any idea how I can view the implementation of native javascript methods specifically the sort method. The reason why I am looking for this I am just wondering what the algorithm used is and what is the complexity of the same.

I am sorting a huge json object in javascript and I was wondering if I should write my own mety hod for the same.

Also does the implementation differ from browser to browser?

like image 491
Baz1nga Avatar asked Jul 10 '11 09:07

Baz1nga


People also ask

What sorting method does JavaScript sort use?

JavaScript by default uses insertion sort for the sort() method. This means that it is not appropriate when sorting large data sets.

Can we use sort function in JavaScript?

In JavaScript, we can sort the elements of an array easily with a built-in method called the sort( ) function. However, data types (string, number, and so on) can differ from one array to another.

How is sort implemented in JavaScript?

Like many other popular languages, JavaScript conveniently comes with a built-in method for sorting arrays. While the end result is the same, the various JavaScript engines implement this method using different sort algorithms: V8: Quicksort or Insertion Sort (for smaller arrays) Firefox: Merge sort.


2 Answers

Take a look at the WebKit implementation: https://gist.github.com/964673. Apparently, it uses min sort/selection sort. From: http://svn.webkit.org/repository/webkit/trunk/Source/JavaScriptCore/runtime/ArrayPrototype.cpp

SpiderMonkey seems to indeed use MergeSort. See: http://hg.mozilla.org/mozilla-central/file/28be8df0deb7/js/src/jsarray.cpp.

like image 86
david Avatar answered Dec 16 '22 05:12

david


Also does the implementation differ from browser to browser?

Yes, the ECMAScript standard does not specify what algorithm should be used. AFAIK Mozillas SpiderMonkey uses mergesort and WebKit uses selection sort. What IE uses you probably have to ask someone at Microsoft, since it's closed source.

And I'm willing to bet a couple of bucks that you cannot come up with a better/faster algorithm than the one implemented into the JavaScript engine of the browsers.

like image 29
Björn Avatar answered Dec 16 '22 05:12

Björn