Which algorithm does the JavaScript Array.sort() function use? I understand that it can take all manner of arguments and functions to perform different kinds of sorts, I'm simply interested in which algorithm the vanilla sort uses.
up vote
7
down vote
favorite
2
|
|||
|
up vote
5
down vote
accepted
|
If you look at this bug 224128, it appears that MergeSort is being used by Mozilla. |
|||
|
up vote
5
down vote
|
The ECMAscript standard does not specify which sort algorithm is to be used. Indeed, different browsers feature different sort algorithms. For example, Mozilla/Firefox's sort() is not stable (in the sorting sense of the word) when sorting a map. IE's sort() is stable. |
||
|
up vote
2
down vote
|
I've just had a look at the WebKit (Safari …) source. A comment in the code specifies the sorting used:
I can't make head nor tail of this. Anyway, looking at the code, there are two nested loops, i = 1…n and j = i…n. So the running time is quadratic. |
||||||||
|
up vote
1
down vote
|
I think that would depend on what browser implementation you are refering to. Every browser type has it's own javascript engine implementation, so it depends. You could check the sourcecode repos for Mozilla and Webkit/Khtml for different implementations. IE is closed source however, so you may have to ask somebody at microsoft. |
||||||
|
up vote
0
down vote
|
After some more research, it appears, for Mozilla/Firefox, that Array.sort() uses mergesort. See the code at http://snipr.com/4o3va. |
||
|
up vote
-2
down vote
|
I would imagine it is implemented with quicksort. Most library sorts are. |
||
|