人にクイックソートが中央値を選ぶと高速な理由について説明しなければいけないのですが、下記の文言で問題ないか確認お願いします。
①pivotを中央値にして分割を行い、分割の階数(深さ)を少なくすることで結果として、比較回数や交換回数を減らすことができるから
この説明がいまいちな気がするんですが、添削をお願いします。
---------------追記--------------------
私の認識が正しいか確認お願いします
以下のような配列があった場合、下のようにpivotに中央値を選び均等に分割できたとします。次にグループAで同じ処理を繰り返すとき、Bの要素は無視してAの中の要素とだけ比較すればよい。Bの要素を無視するので比較回数・交換回数が大幅に減る。Bも同様
よって中央値で分割できると高速で処理できる。
[4,3,2,5,7,6,9,10,8] ↓基準値を6とする [4,3,2,5][確定:6][7,8,9,10] ///[4,3,2,5]を**グループA**,[7,8,9,10]を**グループB**とします 以降それぞれで処理
反対に最小値や最大値をpivotとして選んだ場合、上記の例のように中央値で分割できていないためグループに大きな偏りが生じる。グループCの場合、分割によって比較回数や交換回数をあまり減らすことができていない。
つまり処理が遅くなってします。
[4,3,2,5,7,6,9,10,8] ↓基準値を2とする [確定:2][4,3,5,6,7,8,9,10] ///[4,3,5,6,7,8,9,10] をグループCとする ↓ 以降も最小値を選び続ける
その人に合わせて説明する必要があると思います。ここの回答者さんたちはできるだけ質問者さんの情報を集めてから回答します。対面であれば反応を見ながら表現を変えることもできると思います。しかしそのためにはまず、あなたがクイックソートについて熟知していなければいけません。
> pivotを中央値にして分割を行い、分割の階数(深さ)を少なくすることで…
pivotが中央値の場合に「分割の階数(深さ)を少なく」できるという話の説明が要るのでは?
> 結果として…
「結果として」と言って過程を述べないのでは説明にならないのでは.
「分割の階数(深さ)を少なくする」と,どうして「比較回数や交換回数を減らすことができる」のか? を述べる必要はないのですか?
分からない人に説明するのか、分かっている人にあなたが理解していることを分かってもらうだめに説明するのかで違ってくると思います。
前者であれば、こういう自明なことの説明は、相手と対話しながらでないと難しい。
そもそも(真の)中央値がわかってるならソートする必要ないのでは?
「ピボットが中央値に近いほうが性能がいい」というのはクイックソート自体の説明の中で説明できることでしょう。
様々な意見ありがとうございます
今の状況としては、私がわかっている人に説明するという状況です。
質問を追加させていただいたのでよろしければ確認お願いします
レポートであれば文字数が不十分だと思います。
返信ありがとうございます。
いえ、レポートではないので文字数は気にしなくて問題ありません。
認識が正しいかを教えていただければ幸いです
文言は気にしなくていいというのであれば、ピボットが中央値に近い方が速い理由についてはそれで合っていると思います。
文言で気になるところがありましたでしょうか?
あなたの回答
tips
プレビュー