summaryrefslogtreecommitdiffstats
path: root/docs/performance/sorting_algorithms_comparison.md
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
commit6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch)
treea68f146d7fa01f0134297619fbe7e33db084e0aa /docs/performance/sorting_algorithms_comparison.md
parentInitial commit. (diff)
downloadthunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz
thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'docs/performance/sorting_algorithms_comparison.md')
-rw-r--r--docs/performance/sorting_algorithms_comparison.md52
1 files changed, 52 insertions, 0 deletions
diff --git a/docs/performance/sorting_algorithms_comparison.md b/docs/performance/sorting_algorithms_comparison.md
new file mode 100644
index 0000000000..8450d116e0
--- /dev/null
+++ b/docs/performance/sorting_algorithms_comparison.md
@@ -0,0 +1,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.