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.
![]() ![]() ![]()
1
|
|
add comment
|
![]() ![]() ![]() |
If you look at this bug 224128, it appears that MergeSort is being used by Mozilla. |
|||
![]() ![]() |
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. |
||
![]() ![]() |
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. |
||
![]() ![]() |
After some more research, it appears, for Mozilla/Firefox, that Array.sort() uses mergesort. See the code at http://snipr.com/4o3va. |
||
![]() ![]() |
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. |
||
![]() ![]() |
I would imagine it is implemented with quicksort. Most library sorts are. |
||