数値の並べ替え計算
計算結果
並べ替え(小さい順)
- 最小
- -10
- 最大
- 12.5
数値の並べ替え(ソート)とは、数直線上に置いたときの左から右の順に並べることです。7、−3、12.5、0、−10、4というリストは、−10、−3、0、4、7、12.5になります。その両端が最小値と最大値です。このページは貼り付けたリストを200個まで並べ替え、並べたリストと最小値・最大値を返します。小さな仕事ですが、注意する価値があります。素直なやり方が2か所で間違うからです。1つ目は、数は文字列としてではなく数として比べなければならないことです。同じ値を文字列として並べると、−10、−3、0、12.5、4、7になります。12.5が4より前に来るのは、文字の1が文字の4より先に来て、小数点より後の桁まで比べが届かないからです。1桁の正の数だけのリストではこの誤りは現れません。それこそが危険さの正体で、何桁かの値や負の数を含まないテストはすべて通り抜け、それらを含むリストで本番になって初めて表に出ます。2つ目は負の数で、同じ罠が裏返しに現れます。文字列としては、−10は−2より前に並び、それは正しく見えます。一方−2は−10より前に並び、それは間違いです。正しい順は−20、−10、−3の順で、線の上で左にあるほど小さいのであって、桁が多いから小さいのではありません。見落としやすいことが2つあります。このページは重複を残すので、5、5、3は3、5、5になります。繰り返しを取り除くのは別の操作で、ここでやれば答えは与えられた数をちょうど含まなくなるからです。もう1つ、各値は決まった書き方で印字されるので、12.50は12.5になり、+7は7になります。末尾の0や先頭の+は値の一部ではないからです。意図してそう書いたとしても、出力はそれを保ちません。リストを並べ替えるのは、数の集合に求めることのほとんどで最初の一歩になります。中央値は並べたリストの真ん中で、範囲はその両端で、四分位数は決まった位置から読み取ります。
公式
7、−3、12.5、0、−10、4 ⇒ −10, −3, 0, 4, 7, 12.5、最小=−10、最大=12.5
- n
- リストに入っている数の個数で、1から200までです。1個も認められ、1つのリストを返しますが、それは退化した場合ではなく本当に正しい結果です。1つの数はすでに昇順に並んでおり、その集合の最小であり最大でもあります
- a ≤ b
- 並べ替えが土台にしている比較で、正しさのすべてです。数としての比較なので、−10 ≤ −3も9 ≤ 10も成り立ちます。文字列として並べれば、同じ偶然で−10が−3より前に、10が9より前になります。左から1文字ずつ比べていて、値では比べていないからです
- −10, −3, 0, 4, 7, 12.5
- 並べ替えた出力で、入力の並べ替えそのものです。6個入れて6個出て、同じ6個です。結果に疑いを持ったときに確かめるべき不変条件がこれで、個数が一致し、入れた値がそれぞれ入れた回数だけ現れなければなりません。このページは数を足しも、消しも、まとめもしません
- 最小 = −10
- 並べ替えたリストの先頭で、別に走査して探すのではなくそこから取ります。数直線ではいちばん左の点です。入力の中でいちばん小さく見える項目とは違います。−10は−3より短く見えますが、小さい数です
- 最大 = 12.5
- 並べ替えたリストの末尾で、これも探さずに読み取ります。これと最小値との隔たりが範囲で、その統計量だけはこの2つの出力以外に何も要りません。範囲のページは同じ2つからまさにそれを計算します
- 3, 5, 5
- 重複をどう扱うかです。入力5、5、3は3、5、5に並び、繰り返しは生き残ります。取り除けば見た目は整いますが、上の不変条件が壊れ、値がいくつあるかという問いへの答えが黙って変わり、中央値も変わります
中央値を読むのが並べ替えるいちばんよくある理由です。中央値は並べたリストの真ん中の値、個数が偶数なら真ん中2つの平均で、どちらも並べていないリストからは読めません。四分位数とパーセンタイルも同じで、並べた順番の中の位置で定義されます。2つ目は範囲で、これは最大値から最小値を引いただけです。このページはその2つの数をそのまま印字するので、引き算だけが欲しければ範囲のページがやってくれます。3つ目は人の都合です。表計算から貼り付けた測定値・価格・年齢・得点の列は、順番が付いているだけで格段に読みやすくなります。極端な値が目に飛び込み、かたまりが見えるようになるからです。度数やヒストグラムがそこから始まるのも同じ理由で、並べたリストは最初に描くものになっています。4つ目は表計算ソフト自身の並べ替えを確かめることです。列の書式が変わっていると、数としてではなく文字列として並べ替えてしまうことがよくあり、症状は上の誤りそのものです。10が9より前に、あるいは12.5が4より前に来ます。並べ替えた列がおかしいと思ったら、同じ値をこのページに通せばどちらが読み違えているか分かります。順番が付いたあとは、記述統計の隣人たちの出番です。中央値は真ん中を、範囲は両端を、四分位数は4分の1の位置を、平均は平均値を読み取ります。このうち順番を気にしないのは平均だけです
計算例
符号も小数も混ざったリスト:7、−3、12.5、0、−10、4
- まず最小の値を探します。−10はほかのどれよりも左にあります
- 次に小さいのが−3、続いて0、4、7
- 12.5がいちばん大きいので最後に来ます
- 並べたリストは−10、−3、0、4、7、12.5で、両端が最小値と最大値です
既定の入力で、わざと厄介なものを選んでいます。負の数が2つ、正の小数が1つ、0が1つ入っているので、2つの罠を同時に踏みます。−10は−3より見た目が短いのに先頭に並ぶこと、12.5は1で始まるのに7より後ろに並ぶことに注意してください。これらを文字列として並べると−10、−3、0、12.5、4、7になり、負の側は偶然正しく見え、小数が誤った位置に落ちます
1桁の数が隠してしまう罠:9、10、100、2
- 最初の桁ではなく値で比べます。2は9より小さい
- 10は9より大きいが100より小さい
- 順番は2、9、10、100です
- 最小は2、最大は100です
短い正の数4つで、文字列の並べ替えを捕まえるリストです。文字列として比べると10が先頭、2が最後になります。比べが最初の1文字で止まるからです。1が2より先で、2が9より先に来ます。正しい順は値の比較から出て、何かがおかしい証拠は結果が数直線に見えないことです。10が2より前に来るような桁の並べ方はありません。すべてが1桁のリストはどちらのやり方でも正しく並ぶので、並べ替えのコードを試すならこの例が価値のある場合です
逆順の負の数:−5、−20、−3
- 数直線では−20がいちばん左にあります
- −5はその右、−3は3つの中でいちばん右です
- したがって昇順は−20、−5、−3です
- 最小は−20で、リストの中でいちばん大きく見える数です
前の例の裏返しで、コードではなく読み手を捕まえるほうです。−20は3つの中で最小ですが、桁はいちばん大きい数です。線の上で左にあるほど小さいからです。文字列の並べ替えはこれをたまたま正しく処理します。文字列−20は確かに−5より前に来ます。だから負の場合は文字列の並べ替えが正しく見え、正の複数桁のリストで破綻します。2つの例で両方向を覆っており、両方あるのはそのためです
適用限界
リストは1個から200個までの数で、区切りはコンマ・セミコロン・空白のどれでもよく、1つのリストの中で混ぜても構いません。200は受け付けるリストの長さの上限で、性能のための守りではありません。それより長いリストは遅くなるのではなく拒否されます。これほど長い入力欄は編集できなくなり、答えも読めなくなるからです。数は負でもよく、小数でもよく、0でもよく、重複は取り除かずに残します。千位の区切りは理解しません。コンマの直後に空白が続けば項目の区切りで、2桁の間にあって直後に空白が無ければ小数点として読みます。3桁区切りの形である1,500はどちらでもないので、「1500」と「1.5」を区別できず、推測せずにまとめて拒否します。表計算から貼り付けた、大きな数に区切りを入れた列は、黙って読み違えられるのではなく拒否されます。貼り付ける前に区切りを外してください。指数記法も理解しないので、「1e5」は「100,000」として読まれずに拒否されます。出力は入力の写しではなく各値の決まった書き方です。12.50は12.5、+7は7、−0は0と印字されます。非常に大きな値は出力で指数記法に切り替わり、10²¹以上がその境目です。数から文字への変換がひとりでに記法を変える地点で、それを平らにするには2つ目の数値整形器を書くことになり、このページはそれを持っていません。このページに参考表はありません。表は結果がどの帯に入るかを見せるためのもので、並べ替えに帯はありません。並べ替えは昇順だけです。降順が欲しいときは出力を右から左へ読んでください。
よくある質問
- 負の数と小数が混ざったリストはどう並べますか
- 貼り付けてページに任せてください。区切りはコンマ・セミコロン・空白のどれでもよく、3つを混ぜても構いません。負の数も小数も規則を変えません。小さい数ほど左に来る、それだけです。気をつけるのは、−20が桁が多いのに−3より小さいこと、12.5が1で始まるのに4より大きいことです。数の文字列ではなく値を比べることが、ここでの正しさのすべてです
- 数を入力する順番は結果に影響しますか
- まったくしません。ページは与えられたものを並べ替え、同じ値の集合はどの順で来ても同じ出力になります。それによって結果を確かめられます。リストを並べ替え、もう一度並べ替えても出力は同一です。与えられた値の集合に対して昇順は1つしかないからです。入力の形が残るのは重複のところだけで、5、5、3も3、5、5も3、5、5に並びます
- 重複した値は取り除かれますか
- いいえ、意図してそうしています。出力は入力の並べ替えなので、与えた数をちょうど、与えた回数だけ含まなければなりません。繰り返しを取り除くのは別の操作で、重複除去といい、値がいくつあるかや中央値がいくつかを含め、リストについてのあらゆる問いの答えを変えます。異なる値だけのリストが欲しければそれは別の手順で、目に見える手順であるべきです
- 12.50が12.5で返ってきたのはなぜですか
- 末尾の0は値の一部ではなく、このページは入力の写しではなく各数の決まった書き方を印字するからです。同じ正規化で+7は7に、−0は0になります。出力が入力の完全な写しにならない唯一の場所で、数の書式が自分にとって意味を持つ場合、たとえば通貨のように12.50と12.5が人には違って読める場合には知っておく価値があります
- 大きい順に並べ替えられますか
- このページは昇順を返し、降順はその同じ出力を右から左へ読んだものです。並べ替えたリストを逆にすればすぐ逆順になるので、追加で計算することは何もありません。一方向しか出さないのは、後段の統計がどれも昇順を求めるからです。中央値も四分位数も範囲も昇順のリストから定義され、降順のものはどれかを読む前に逆順にしなければなりません
- 貼り付けた表計算の列が拒否されたのはなぜですか
- まず間違いなく千位の区切りです。このページではコンマの直後に空白が続けば項目の区切りで、2桁の間にあって直後に空白が無ければ小数点として読みます。1,500という形はそのどちらでもないので、「1500」と「1.5」を区別できず、リストごと推測せずに拒否します。指数記法も同じように拒否します。「1e5」は「100,000」ではありません。貼り付ける前に区切りを外してください
参考文献
- Sorting — 集まりを順番に並べるという一般的な問題と、比較に基づく並べ替えがそれ自体で研究分野になっている理由 — Wolfram MathWorld (United States)
- Ordering — 全順序とは何か、そしてリストをそれで並べ替えられるために比較が満たすべき性質 — Wolfram MathWorld (United States)
- Real Line — 「小さい順」が左から右を意味することを、負の数も含めて納得させるための数直線の像 — Wolfram MathWorld (United States)
- 学習指導要領(平成29・30・31年改訂) — 数の大小比較と数直線が小学校の「数と計算」領域で扱われることを示す文部科学省の告示・解説 — 文部科学省