pulpul 日本の試験

基本情報技術者 概念書 · アルゴリズムとプログラミング

複数条件の比較と並べ替え

要点と定義

比較器は、二つの値を比較し、その関係を整数の符号で返す仕組みです。負の値なら左の値が小さく、正の値なら大きく、0なら比較基準上は同じです。戻り値の絶対値ではなく符号を見ます。

複数の条件で並べ替えるときは、条件を指定順に評価します。最初の条件で差が付けばその結果で順序が決まり、0なら次の条件に進みます。すべての条件で0なら、条件だけでは順序を決められません。安定な並べ替えでは、その場合に元の順序が保たれます。

比較対象と比較方法は別々に指定できます。たとえば、行を文字列の配列で表すなら、列番号を添字にして値を取り出し、その値を指定した比較器で比べます。比較器を表す情報をキーで登録する場合は、キーと比較器の型に合った対応関係を保ちます。条件の繰返し対象は行数ではなく、指定された条件の並びです。

適用条件と例

昇順では比較結果をそのまま使い、降順では符号を反転します。たとえば「分類名の昇順、同じ分類なら価格の降順」では、まず分類名を比較し、同じ場合にだけ価格を比較します。先の条件で決まった順序を、後の条件が上書きすることはありません。

比較方法は値の意味に合わせます。文字列として比べる場合は辞書順です。「1,000」「2,000」「300」は文字列の辞書順ならこの順になりますが、カンマを除いて数値として比べると300、1,000、2,000の順です。文字列の形式を整えて数値に変換し、その値を比較すれば、数値の昇順を作れます。変換できない文字列があり得る場合は、エラーや無効値の扱いも決めておく必要があります。

複数の値から検索キーを作るときは、要素の意味と順序を、検索側と集計側でそろえます。たとえば「時間帯、曜日コード」の順でキーを作るなら、曜日名から曜日コードへの対応を確認し、時間帯の後ろに曜日コードを置きます。位置番号をそのままコードとみなすと、並びの開始位置が異なる場合に誤ったキーになります。

この節の続き

ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。

アプリでこの節を読む