1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
# Sorting algorithms comparison
This program compares the performance of three different sorting
algorithms:
- bubble sort
- selection sort
- quicksort
It consists of the following functions:
----------------------- ---------------------------------------------------------------------------------------------------
**`sortAll()`** Top-level function. Iteratively (200 iterations) generates a randomized array and calls `sort()`.
**`sort()`** Calls each of `bubbleSort()`, `selectionSort()`, `quickSort()` in turn and logs the result.
**`bubbleSort()`** Implements a bubble sort, returning the sorted array.
**`selectionSort()`** Implements a selection sort, returning the sorted array.
**`quickSort()`** Implements quicksort, returning the sorted array.
`swap()` Helper function for `bubbleSort()` and `selectionSort()`.
`partition()` Helper function for `quickSort()`.
----------------------- ---------------------------------------------------------------------------------------------------
Its call graph looks like this:
sortAll() // (generate random array, then call sort) x 200
-> sort() // sort with each algorithm, log the result
-> bubbleSort()
-> swap()
-> selectionSort()
-> swap()
-> quickSort()
-> partition()
The implementations of the sorting algorithms in the program are taken
from <https://github.com/nzakas/computer-science-in-javascript/> and are
used under the MIT license.
You can try out the example program
[here](https://mdn.github.io/performance-scenarios/js-call-tree-1/index.html)
and clone the code [here](https://github.com/mdn/performance-scenarios)
(be sure to check out the gh-pages branch). You can also [download the
specific profile we
discuss](https://github.com/mdn/performance-scenarios/tree/gh-pages/js-call-tree-1/profile)
- just import it to the Performance tool if you want to follow along. Of
course, you can generate your own profile, too, but the numbers will be
a little different.
|