質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

Q&A

0回答

1217閲覧

クイックソートが中央値を選ぶと高速な理由

konnitiha2

総合スコア30

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

0グッド

1クリップ

投稿2020/07/21 10:02

編集2020/07/21 11:16

人にクイックソートが中央値を選ぶと高速な理由について説明しなければいけないのですが、下記の文言で問題ないか確認お願いします。

①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とする      ↓ 以降も最小値を選び続ける

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/07/21 10:08 編集

その人に合わせて説明する必要があると思います。ここの回答者さんたちはできるだけ質問者さんの情報を集めてから回答します。対面であれば反応を見ながら表現を変えることもできると思います。しかしそのためにはまず、あなたがクイックソートについて熟知していなければいけません。
fana

2020/07/21 10:22

> pivotを中央値にして分割を行い、分割の階数(深さ)を少なくすることで… pivotが中央値の場合に「分割の階数(深さ)を少なく」できるという話の説明が要るのでは? > 結果として… 「結果として」と言って過程を述べないのでは説明にならないのでは. 「分割の階数(深さ)を少なくする」と,どうして「比較回数や交換回数を減らすことができる」のか? を述べる必要はないのですか?
otn

2020/07/21 10:56

分からない人に説明するのか、分かっている人にあなたが理解していることを分かってもらうだめに説明するのかで違ってくると思います。 前者であれば、こういう自明なことの説明は、相手と対話しながらでないと難しい。
Kaleidoscope

2020/07/21 11:03

そもそも(真の)中央値がわかってるならソートする必要ないのでは? 「ピボットが中央値に近いほうが性能がいい」というのはクイックソート自体の説明の中で説明できることでしょう。
konnitiha2

2020/07/21 11:17

様々な意見ありがとうございます 今の状況としては、私がわかっている人に説明するという状況です。 質問を追加させていただいたのでよろしければ確認お願いします
Zuishin

2020/07/21 11:45

レポートであれば文字数が不十分だと思います。
konnitiha2

2020/07/21 11:54 編集

返信ありがとうございます。 いえ、レポートではないので文字数は気にしなくて問題ありません。 認識が正しいかを教えていただければ幸いです
Zuishin

2020/07/21 12:04

文言は気にしなくていいというのであれば、ピボットが中央値に近い方が速い理由についてはそれで合っていると思います。
konnitiha2

2020/07/21 12:21

文言で気になるところがありましたでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問