\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}