\documentclass[xelatex,a4paper,11pt,ja=standard]{bxjsarticle}

\usepackage{tex/preamble}
\usepackage{tex/detailed-title}
\usepackage{multirow}

\reportauthor{柴田健琉}
\reporttitle{前期第2回課題}
\reportdate{2026年}{04月}{20日}
\turnindate{2026年}{04月}{21日}
\schoolname{岐阜工業高等専門学校}
\department{電子制御工学科}
\subject{情報処理2}
\professor{遠藤 登}
\studentid{2024D14}
\seatingnum{15}

\begin{document}
    \detailedtitle

    \section{はじめに}

    この課題のプログラムは以下の環境での実行が確認されている：

    \begin{itemize}
        \item{OS: NixOS 25.11, Linux 6.19.12}
        \item{GCC: 15.2.0}
        \item{コンパイラフラグ: \texttt{-g -O1 -Wall -Wpedantic}}
    \end{itemize}

    \section{下準備：並び換えるデータの用意}

    課題に使用するデータはLinuxの\texttt{/dev/urandom}で以下のbashコマンドで生成した.

    \begin{lstlisting}[language=bash,title={乱数配列生成コマンド(Xに任意の個数)}]
$ sed '1i\#pragma once\' <(head -c X /dev/urandom | xxd -iC -n dataX) > dataX.h
    \end{lstlisting}

    出力されるヘッダーファイルには\texttt{unsigned char}型の乱数配列\texttt{dataX}と配列の長さ\texttt{dataX\_len}が格納されている.

    \lstinputlisting[language=C,title={\texttt{data10.h}}]{src/cls02/data10.h}
    \lstinputlisting[language=C,title={\texttt{data100.h}},linerange={1-3,11-13},consecutivenumbers={false}]{src/cls02/data100.h}
    \lstinputlisting[language=C,title={\texttt{data1000.h}},linerange={1-3,86-88},consecutivenumbers={false}]{src/cls02/data1000.h}

    \newpage

    \section{課題：3つのソートアルゴリズム}

    10個, 100個, 1000個の乱数データに対し, 単純交換・単純選択・単純挿入ソートを実行し, 交換回数・比較回数を記録する.

    \lstinputlisting[language=C,title={3つのソートアルゴリズム}]{src/cls02/main.c}

    \subsection{実行結果}

    \begin{figure}[tbh]
        \centering
        \includegraphics[width=12cm]{assets/cls02.png}
        \caption{実行結果}
    \end{figure}

    \begin{table}[!ht]
        \centering
        \begin{tabular}{c|c|c|c|c|c|c}
            \hline
            \multirow{2}{6em}{データ数} & \multicolumn{2}{|c|}{単純交換} & \multicolumn{2}{|c|}{単純選択} & \multicolumn{2}{c}{単純挿入} \\
            \cline{2-7}
                                        & 比較 & 交換 & 比較 & 交換 & 比較 & 交換 \\
                                        \hline
            10 & 81 & 20 & 55 & 10 & 45 & 20 \\
            100 & 9801 & 2571 & 5050 & 100 & 4950 & 2205 \\
            1000 & 998001 & 243054 & 500500 & 1000 & 499500 & 94085 \\
            \hline
        \end{tabular}
        \caption{ソートアルゴリズムとデータ数での比較・交換回数}
    \end{table}

    \appendix
    \section{付録}
    \input{dev-env.tex}
\end{document}
