File: sorting_algorithms_comparison.md

package info (click to toggle)
thunderbird 1%3A115.16.0esr-1~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 3,476,252 kB
  • sloc: cpp: 6,972,150; javascript: 5,209,211; ansic: 3,507,222; python: 1,137,609; asm: 432,531; xml: 205,149; java: 175,761; sh: 116,485; makefile: 22,152; perl: 13,971; objc: 12,561; yacc: 4,583; pascal: 2,840; lex: 1,720; ruby: 1,075; exp: 762; sql: 666; awk: 580; php: 436; lisp: 430; sed: 70; csh: 10
file content (52 lines) | stat: -rw-r--r-- 2,159 bytes parent folder | download | duplicates (20)
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.