From c0923664214655a439d0d9df41a52b8936d3b43d Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Sat, 6 Jun 2026 22:22:01 +0200 Subject: move Jekyll source files to src/ --- src/index.html | 228 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 228 insertions(+) create mode 100644 src/index.html (limited to 'src/index.html') diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..20c8386 --- /dev/null +++ b/src/index.html @@ -0,0 +1,228 @@ +--- +title: Main page +layout: plain +navbar: + link: Project +links: + - {rel: stylesheet, href: assets/css/plots.css} +input_kind: + - best + - average + - worst +plots: + - codename: bubble_sort + brief_name: Bubble sort + display_name: Bubble sort + min_length: 0 + max_length: 200 + iterations: 100 + complexity: + best: O(n) + average: O(n2) + worst: O(n2) + - codename: bubble_sort_optimized + brief_name: "… \"optimized\"" + display_name: "\"Optimized\" bubble sort" + min_length: 0 + max_length: 200 + iterations: 100 + complexity: + best: O(n) + average: O(n2) + worst: O(n2) + - codename: heapsort + brief_name: Heapsort + display_name: Heapsort + min_length: 0 + max_length: 200 + iterations: 100 + complexity: O(n log n) + - codename: insertion_sort + brief_name: Insertion sort + display_name: Insertion sort + min_length: 0 + max_length: 200 + iterations: 100 + complexity: + best: O(n) + average: O(n2) + worst: O(n2) + - codename: merge_sort + brief_name: Merge sort + display_name: Merge sort + min_length: 0 + max_length: 200 + iterations: 100 + complexity: O(n log n) + - codename: quicksort_first + brief_name: Quicksort (first element as pivot) + display_name: Quicksort (first element as pivot) + min_length: 0 + max_length: 200 + iterations: 100 + complexity: + best: O(n2) + average: O(n log n) + worst: O(n2) + - codename: quicksort_second + brief_name: "… second element…" + display_name: Quicksort (second element as pivot) + min_length: 0 + max_length: 200 + iterations: 100 + complexity: + best: O(n2) + average: O(n log n) + worst: O(n2) + - codename: quicksort_middle + brief_name: "… middle element…" + display_name: Quicksort (middle element as pivot) + min_length: 0 + max_length: 200 + iterations: 100 + complexity: O(n log n) + - codename: quicksort_last + brief_name: "… last element…" + display_name: Quicksort (last element as pivot) + min_length: 0 + max_length: 200 + iterations: 100 + complexity: + best: O(n2) + average: O(n log n) + worst: O(n2) + - codename: quicksort_random + brief_name: "… random element…" + display_name: Quicksort (random element as pivot) + min_length: 0 + max_length: 200 + iterations: 100 + complexity: O(n log n) + - codename: selection_sort + brief_name: Selection sort + display_name: Selection sort + min_length: 0 + max_length: 200 + iterations: 100 + complexity: O(n2) +--- +

{{ site.settings.project.name }}

+ +
+
+

The goals of this "project" include a) familiarizing +myself with a few sorting algorithms by examining their (possibly, simplified) +implementations and b) studying the way algorithm's running time changes in +relation to the length of its input (a.k.a. identifying its time +complexity).

+

A simple way to visualize the way algorithm's running +time changes is to make appropriate measurements and plot them on a nice graph. +The results of course are highly dependent on the hardware used, while the +graph's look depends on the software used for rendering.

+

Both the hardware & the software that were used +to produce the plots are listed below.

+ + + + + + + + + + + + + + + + + +
CPUAMD Ryzen 7 5700X
OSLinux 6.12
CPython3.14.2
matplotlib3.10.8
+
+
+ +{% if page.plots and page.plots != empty %} +
+
+

The table & plots below are just an attempt to nicely lay out the +data generated using the code from the project repository's master +branch. +Visit {{ site.github.repository_url }} for more details.

+ +

Each of the implemented algorithms was provided with three input +sequences:

+
    +
  • a list of n consecutive numbers sorted in ascending order,
  • +
  • … in descending order,
  • +
  • … in random order.
  • +
+

Use the table below to quickly navigate to the plots for the +corresponding algorithm.

+ + + + + + + + + {% for input_kind in page.input_kind %} + + {% endfor %} + + + +{% for algorithm in page.plots %} + + + {% for input_kind in page.input_kind %} + {% if algorithm.complexity[input_kind] %} + {% assign complexity = algorithm.complexity[input_kind] %} + {% else %} + {% assign complexity = algorithm.complexity %} + {% endif %} + + {% endfor %} + +{% endfor %} + +
AlgorithmComplexity
{{ input_kind | capitalize }}
{{ algorithm.brief_name }}{{ complexity }}
+
+
+ +{% for algorithm in page.plots %} + +

{{ algorithm.display_name }}

+
+ {% for input_kind in page.input_kind %} + {% if algorithm.iterations[input_kind] %} + {% assign iterations = algorithm.iterations[input_kind] %} + {% else %} + {% assign iterations = algorithm.iterations %} + {% endif %} + {% if algorithm.complexity[input_kind] %} + {% assign complexity = algorithm.complexity[input_kind] %} + {% else %} + {% assign complexity = algorithm.complexity %} + {% endif %} + {% capture stem %}{{ algorithm.codename }}_{{ iterations }}_{{ input_kind }}_{{ algorithm.min_length }}_{{ algorithm.max_length }}{% endcapture %} +
+
+ + {{ algorithm.display_name | escape }}, {{ iterations }} iterations, {{ input_kind }} case + +
+ {{ algorithm.display_name }}
+ {{ input_kind | capitalize }} case, {{ complexity }} +
+
+
+ {% endfor %} +
+{% endfor %} + +{% else %} +

Sorry, no plots have been added yet.

+
+{% endif %} -- cgit v1.3