From e1ea587480a863f073f7cdfdede09819d8282708 Mon Sep 17 00:00:00 2001 From: Andreas Kapp Lindquist Date: Wed, 29 Oct 2025 10:52:29 +0100 Subject: report(*): idk stuff --- report/report.tex | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/report/report.tex b/report/report.tex index 2f414b6..b14fcab 100644 --- a/report/report.tex +++ b/report/report.tex @@ -191,6 +191,9 @@ the array format. All functions in this program follow the x86 calling conventions, with a few exceptions where all registers are preserved. Below is a detailed explanation of some of the more interesting functions. +\subsection{Array maker} +\snippet{19}{46}{../src/array_maker.s} + \subsection{Insertion-sort} This is a classic implementation of the iterative insertion-sort. The function takes three arguments: address of the array of pointers to each coordinate, @@ -263,7 +266,8 @@ the output from the \textit{builtin} function \textit{sort}. Given all of the tests pass, we can then run \textit{benchmark.sh}, which times how long it takes for our program to run with each test file for each algorithm, and saves the result in a \textit{csv} file. The results of this \textit{csv} -file is shown +file, together with functions asymptotically equivalent to $\mathcal O(n)$, $\mathcal O(n\log +n)$ and $\mathcal O(n^2)$, is shown on \autoref{fig:benchmark}. \begin{figure}[H] \centering @@ -294,17 +298,17 @@ file is shown qsort\_reverse, qsort\_sorted} % -- O(n) - \addplot[domain=1:92709, samples=100, thick, densely dotted, black] + \addplot[domain=1:100000, samples=100, ultra thick, densely dotted, black] {(x * 1/18000000+0.0003)}; \addlegendentry{$\mathcal O(n)$} % -- O(nlogn) - \addplot[domain=1:92709, samples=100, thick, dotted, black] + \addplot[domain=1:100000, samples=100, ultra thick, dotted, black] {(x*ln(x)) * 1/80000000 + 0.0003}; \addlegendentry{$\mathcal O(n\log n)$} % -- O(n^2) - \addplot[domain=1:92709, samples=100, thick, dashed, black] + \addplot[domain=1:100000, samples=100, ultra thick, dashed, black] {(x*x) * 1/5000000000+0.0003}; \addlegendentry{$\mathcal O(n^2)$} @@ -314,6 +318,22 @@ file is shown sorted and reverse sorted data.}\label{fig:benchmark} \end{figure} +From \autoref{fig:benchmark} we see that Insertionsort behaves as expected +with a best-case runtime of $\mathcal O(n)$ when the input is sorted, and a +worst-case runtime of $\mathcal O(n^2)$, when the input reversely sorted or +random. We also see that Quicksort behaves as expected with a best-case runtime +of $\mathcal O(n\log n)$ when the input is random, and a worst-case runtime of +$\mathcal O(n^2)$ when the input is either sorted or reversely sorted. + +Footnote + +isort\_random,1000000,386.935 +qsort\_random,1000000,0.148 +isort\_random,1000000,343.616 +qsort\_random,1000000,0.159 +isort\_random,1000000,384.022 +qsort\_random,1000000,0.155,0.146 + \section{Conclusion} -- cgit v1.2.3-70-g09d2