Sorting algorithms comparison¶
This article describes a simple example program that we use in two of the Performance guides: the guide to the Call Tree and the guide to the Flame Chart.
This program compares the performance of three different sorting algorithms:
bubble sort
selection sort
quicksort
It consists of the following functions:
about:debugging |
Debug add-ons, content tabs, and workers running in the browser. |
sortAll() |
Top-level function. Iteratively (200 iterations) generates a randomized array and calls |
sort() |
Calls each of |
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 |
partition() |
Helper function for |
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 and clone the code here (be sure to check out the gh-pages branch). You can also download the specific profile we discuss - 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.