SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

マンガで分かるプログラミング用語辞典

「昇順と降順」
~マンガでプログラミング用語解説

マンガで分かるプログラミング用語辞典(221)

  • X ポスト
  • このエントリーをはてなブックマークに追加

解説

 「昇順」(ascending order、ASCの略号で書かれることもある)は、小さい値から順に並べた整列方法です。

 「降順」(descending order、DESCの略号で書かれることもある)は、大きい値から順に並べた整列方法です。

 プログラムのソートでは、さまざまな値を順に並べます。数値のソートでは、数値を比較して並べ換えることができますが、文字列では他の方法が必要になります。

 よくある方法は、1文字目から順に、文字コードやコードポイントといった文字に対応する数値を比較することです。1文字目が同じ場合は2文字目、2文字目が同じ場合は3文字目と、順に比較していくことで、並び順を決定します。

 (コードポイントは、Unicode などで文字を表現するために割り当てられた番号のことです。UTF-8などの文字コードでは、この値をもとに文字コードの値を決めています)

 また、こうした単純な数値ではなく、その国の文化に依存した辞書の並び順に近づける方法もよく見られます。OSのファイルのソートでは、文字コードの順番ではなく、より辞書に近い順番でファイルを並べ換えます。

サンプル

 「昇順と降順」のサンプルです。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title>「昇順と降順」のサンプル</title>
    <style> #output { font-size: 32px; line-height: 1.5; } </style>
  </head>
  <body>
    <pre id="output"></pre>
    <script>
window.addEventListener('DOMContentLoaded', e => {
    // 出力用の関数
    const print = function() {
        const el = document.querySelector('#output');
        el.textContent += Array.from(arguments).join(':') + '\n';
    };

    let array;

    print('数値でソート 昇順');
    array = ['1', '23', '123', '5', '99'];
    print('前', array);
    array.sort((a, b) => a - b);
    print('後', array);
    print('');

    print('数値でソート 降順');
    array = ['1', '23', '123', '5', '99'];
    print('前', array);
    array.sort((a, b) => b - a);
    print('後', array);
    print('');

    print('文字のコードポイントでソート 昇順');
    array = ['1', '23', '123', '5', '99'];
    print('前', array);
    array.sort();
    print('後', array);
    print('');
    print('');

    print('文字のコードポイントでソート 昇順');
    array = ['あか', 'いか', 'イカ', 'アカ', 'アイ', 'あい'];
    print('前', array);
    array.sort();
    print('後', array);
    print('');

    print('言語による並び順でソート 昇順');
    array = ['あか', 'いか', 'イカ', 'アカ', 'アイ', 'あい'];
    print('前', array);
    array.sort((a, b) => a.localeCompare(b));
    print('後', array);
});
    </script>
  </body>
</html>
出力結果
数値でソート 昇順
前:1,23,123,5,99
後:1,5,23,99,123

数値でソート 降順
前:1,23,123,5,99
後:123,99,23,5,1

文字のコードポイントでソート 昇順
前:1,23,123,5,99
後:1,123,23,5,99

文字のコードポイントでソート 昇順
前:あか,いか,イカ,アカ,アイ,あい
後:あい,あか,いか,アイ,アカ,イカ

言語による並び順でソート 昇順
前:あか,いか,イカ,アカ,アイ,あい
後:アイ,あい,あか,アカ,いか,イカ
フィードバックお待ちしております!

 ご感想、解説して欲しい用語、解説内容のアドバイスなどございましたら、FacebookTwitterなどでお気軽に編集部までお寄せください。よろしくお願いいたします。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
マンガで分かるプログラミング用語辞典連載記事一覧

もっと読む

この記事の著者

柳井 政和(ヤナイ マサカズ)

クロノス・クラウン合同会社 代表社員http://crocro.com/オンラインソフトを多数公開。プログラムを書いたり、ゲームを作ったり、記事を執筆したり、マンガを描いたり、小説を書いたりしています。「めもりーくりーなー」でオンラインソフト大賞に入賞。最近は、小説家デビューして小説も書いています(『裏切りのプログラム』他)。面白いことなら何でもOKのさすらいの企画屋です。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/17770 2023/07/04 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング