sort
「sort」の意味
「sort」は英語で、主に「分類する」「仕分ける」という意味を持つ動詞である。また、名詞としては「種類」「類」を意味し、さまざまな物事を区別する際に用いられる。動詞としては、物や情報を特定の基準に従って整理することを指し、名詞としては、同じ特徴を持つものの集まりやグループを表す。「sort」の発音・読み方
「sort」の発音は、IPA表記では/sɔːrt/であり、IPAのカタカナ読みでは「ソート」となる。日本人が発音するカタカナ英語では、「ソート」と読むことが一般的である。「sort」の語源
「sort」の語源は、ラテン語の「sors」(運命、くじ)に由来する。中世フランス語では「sortir」(選び出す、分ける)となり、英語に取り入れられた。その後、英語では名詞と動詞の両方の形で使用されるようになり、現在の意味に至る。「sort」の類語
「sort」の類語には、"classify"(分類する)、"categorize"(カテゴリー分けする)、"arrange"(整理する)、"group"(グループ化する)などがある。これらの類語は、いずれも物事を整理し、区別することを意味している。「sort」に関連する用語・表現
「sort」に関連する用語や表現には、"sorting algorithm"(ソートアルゴリズム)、"sort out"(整理する、解決する)、"assortment"(取り揃え、詰め合わせ)などがある。これらの表現は、それぞれ「sort」の意味を含んだ状況やアクションを表している。「sort」の例文
1. Please sort these documents by date.(これらの書類を日付順に分類してください。)2. There are various sorts of fruits in this basket.(このかごにはさまざまな種類の果物が入っている。)
3. She sorted the clothes into different piles.(彼女は服をいくつかの山に分けて整理した。)
4. The librarian sorted the books by genre.(司書は本をジャンル別に分類した。)
5. He is trying to sort out his financial problems.(彼は自分の財政問題を解決しようとしている。)
6. The computer can sort the data in alphabetical order.(コンピュータはデータをアルファベット順に並べ替えることができる。)
7. The teacher asked the students to sort the materials by color.(先生は生徒たちに、資料を色別に分類するように頼んだ。)
8. The store offers a wide assortment of products.(その店は多種多様な商品を取り揃えている。)
9. The system automatically sorts emails into different folders.(システムは自動的にメールを異なるフォルダに分類する。)
10. The manager sorted the employees into teams.(マネージャーは従業員をチームに分けた。)
ソート【sort】
戦略攻撃能力削減に関する条約(モスクワ条約、Treaty Between the United States of America andthe Russian Federation on Strategic Offensive Reductions : SORT)
整列
sort
sort — 配列をソートする
説明
bool sort ( array &array [, int sort_flags] )この関数は配列をソートします。この関数が正常に終了すると、 各要素は低位から高位へ並べ替えられます。
注意: この関数は、 array パラメータの要素に対して新しいキーを割り当てます。 その際、単純にキーを並べ替える代わりに、 すでに割り当てられている既存のキーを削除してしまいます。
成功した場合に TRUE を、失敗した場合に FALSE を返します。
例 302. sort() の例
<?php
$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);
foreach ($fruits as $key => $val) {
echo "fruits[" . $key . "] = " . $val . "\n";
}
?>
上の例の出力は以下となります。fruits[0] = apple fruits[1] = banana fruits[2] = lemon fruits[3] = orange
fruits はアルファベットの昇順にソートされました。
オプションの 2 番目のパラメータ sort_flags は、以下の値によりソートの動作を修正するために使用することが可能です。
ソート型のフラグ:
- SORT_REGULAR - 通常通りに項目を比較 (型は変更しません)
- SORT_NUMERIC - 数値的に項目を比較
- SORT_STRING - 文字列として項目を比較
- SORT_LOCALE_STRING - は、カレントのロケールに に基づき比較を行います。PHP 4.4.0 と PHP 5.0.2で追加されました。 PHP 6 より前のバージョンではシステムロケールを使用します。これは setlocale() を使用して変更可能です。 PHP 6 以降では、i18n_loc_set_default() 関数を 使用する必要があります。
注意: 2 番目の引数は PHP 4 で追加されました。
警告 |
複数の型が混在する配列をソートする場合には、注意してください。
sort() が予測不可能な結果を出力することがあります。
|
arsort()、 asort()、ksort()、 krsort()、 natsort()、natcasesort()、 rsort()、usort()、 array_multisort() および uksort() も参照ください。
ソート
ソート (英: sort) は、データの集合を一定の規則に従って並べること[1]。日本語では整列(せいれつ)、並べ替え(ならべかえ)、分類(ぶんるい)などと訳される[1]。
主に配列や連結リストのような、リストデータ構造に分類されるコレクション(コンテナ)に格納されている要素データを、全順序関係によって並べ替えることを指す。また、単に「ソート」といった場合、値の小さい方から大きい方へ順に並べる昇順(しょうじゅん、英: ascending order)を指すことが多い。その反対に値を大きい方から小さい方へ順に並べることを降順(こうじゅん、英: descending order)という。
対象となるコレクションのデータ構造や必要とされる出力、また時間的コストと空間的コストの兼ね合いによって、ソートに使われるアルゴリズムは異なる。
概要
効率的なソートは、ソート済みのデータを必要とする他のアルゴリズム(探索やマージ)の最適化にとっても重要である。また、ソートされたデータの方が人間にとっても読みやすい。形式的には、その出力は以下の2つの条件を満たさなければならない。
- 設定された順序(昇順または降順)に対して、逆になるような順序の出力があってはならない。
- 出力は入力の並べ替えでなければならない。
情報工学や計算機科学の黎明期から、ソートは単純な問題でありながら効率的に解くことが難しく、そのためもあって盛んに研究されてきた。例えばバブルソートについては、早くも1956年には解析が行われている[2]。しかし、21世紀初にも新たなソートアルゴリズムが発明されている(例えば、Timsortは2002年に、図書館ソートは2004年に発表された)。すでに考案されているソートにも様々なアルゴリズムがあり、またアルゴリズムという概念を学習するのに最適なので、情報工学や計算機科学での入門的題材として広く親しまれている。例えば、分割統治法、データ構造、乱択アルゴリズム、計算量解析、O記法、時間と空間のトレードオフ、下限などが含まれる。
グラフィカルユーザインタフェース (GUI) においてよく使われるウィジェットのひとつとしてリストビュー (list view) が挙げられるが、各レコードのフィールドを表す任意のカラムについてリスト中のアイテムを昇順/降順ソートできるようになっていることが多い。
分類
計算機科学では、ソートアルゴリズムを次のように分類する。
安定ソート
同じ値に関して、ソート前の順序がソート後も維持されているソートを安定ソートという。
安定ソートでないソートであっても、ソート条件に元の順序を含めることで必ず安定ソートにすることが可能である。しかしながら、別途元の順序を記憶する領域が必要になることから、内部ソートであっても外部ソートになってしまう。(→#内部ソートと外部ソート)
内部ソートと外部ソート
ソートされるデータの格納領域を変更して処理を進めていくIn-placeのソートを内部ソートという。クイックソートのような再帰を利用するアルゴリズムは、再帰のために O(log n) の領域を必要とすることからIn-placeであるか否かは議論が分かれるところであるが、これも内部ソートに含めるのが一般的である。このことから内部ソートは、ソートされるデータの格納域以外には O(1) か O(log n) の領域しか必要としない。
逆に、ソートされるデータの格納領域以外に O(n) 以上の一時的な記憶領域が必要であるソートを外部ソートという。
メモリ使用量(およびその他の計算資源の使用量)による分類である。すべての内部ソートは、インデックスや参照、複製を作成して処理することで事実上の外部ソートにすることができる。アルゴリズムとしての本質ではないので一般的には無視されるが、高速化や柔軟な処理のために冗長な記憶領域を使用する場合がある。例えば、非安定ソートアルゴリズムで安定ソートを実現する場合など。(→#安定ソート)
比較ソート
個々の項目を比較演算で大小判定することを基本とするソートを比較ソートという。
比較ソートには#比較ソートの理論限界が存在する。
計算量
入力されるリストの項目数 n に基づいた計算量による分類。典型的なソートアルゴリズムでは、最善で O(n log n) 、最悪で O(n2) である。理想は O(n) である。
比較ソートでは、一般的な(ランダムに並んだ)データの並べ替えに対しては少なくとも O(n log n) の比較回数が必要である。(→#比較ソートの理論限界)
手法
汎用手法による分類。挿入、交換、選択、マージなどがある。交換ソートにはバブルソートやシェーカーソートやコムソートなどが含まれる。選択ソートにはヒープソートなどが含まれる。
再帰
再帰が必須、不可能、どちらでも可能、という分類。実装上の都合で再帰に関わる制限がある場合に注目される。
一覧
配列に格納されたn個のデータをソートする場合について、各アルゴリズムの性能を示す。 計算時間の表記に用いている記号 O(オー)については、ランダウの記号を参照。
以下の表で、n はソートすべきデータ要素数である。平均実行時間と最悪実行時間は時間計算量を示している。このとき、ソートキーの長さは一定と仮定しており、比較や交換といった操作は定数時間で行われるとする。メモリ使用量は、入力データの格納域以外に必要となる領域を示している。これらは、いずれも比較ソートである。
名称 |
平均計算時間 |
最悪計算時間 |
メモリ使用量 |
安定性 |
手法 |
備考 |
---|---|---|---|---|---|---|
バブルソート | ![]() | 出典は列挙するだけでなく、脚注などを用いてどの記述の情報源であるかを明記してください。 |
- D. E. Knuth, The Art of Computer Programming, Volume 3: Sorting and Searching.
関連項目
外部リンク
- Sequential and parallel sorting algorithms - 各種アルゴリズムの説明と解析
- Ricardo Baeza-Yates' sorting algorithms on the Web
- 'Dictionary of Algorithms, Data Structures, and Problems'
- Slightly Skeptical View on Sorting Algorithms Softpanorama。古典的アルゴリズムについて論じ、クイックソートの代替となるアルゴリズムを提案。
- Sorting Revisited
- The Stony Brook Algorithm Repository コード例と解説
- William Cawley Gelling, Markus E. Nebel, Benjamin Smith and Sebastian Wild: "Multiway Powersort", (September 16, 2022)
ソートアルゴリズムの視覚化
- sort algorithm visualizer - 11種類のソートアルゴリズムについて各種初期条件でのソートの様子を視覚化
- いくつかのソートアルゴリズムを視覚化したJava applet
- Sort Animation - Javaアプレットによるバブルソート、挿入ソート、クイックソート、選択ソートのアニメーション図解
- xSortLab - 別のJavaアプレット。バブルソート、挿入ソート、クイックソート、選択ソート、マージソートをアニメーション化している。ソート対象を縦の棒で示している。
- Sorting contest - 8種類のソートアルゴリズムのアニメーションを一斉に実行でき、速度の違いを体感できる。
固有名詞の分類
- sortのページへのリンク