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

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

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

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

ソート

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

928閲覧

クイックソートについて

konnitiha2

総合スコア30

アルゴリズム

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

ソート

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

1クリップ

投稿2020/07/12 10:32

編集2020/07/12 12:44

※私の質問に目を通していただきありがとうございます。質問が適切でない場合はご指摘宜しくお願いします。

クイックソートについて勉強している学生です。

今、珠玉のプログラミング(programing pearls)という本でクイックソートp147ーを勉強しているのですがここでクイックソートについて3つほど質問があります。
(前提として、下記画像は分割方法などは適当でとにかくクイックソートのイメージが正しいか確認するためのものです。緑色が基準値を表しています)

質問
①下記画像は私がクイックソートを行っているイメージを図にしているのですが正しいでしょうか。私のイメージとしては、基準値を決めてある配列を基準値より大きいグループと以下のグループに分ける工程を部分配列の長さが1以下になるまで繰り返すということです。

②クイックソートを実装するにあたり大事になってくる点は大きく二つあり、一つ目が基準値の決め方、二つ目が基準値で配列を分割する方法で正しいでしょうか。

③配列を基準値で分割する方法には様々な手法があり、その一つがNico Lomutoが考えた方法であると考えているのですが正しいですか?

イメージ説明

-------------------追加質問----------------------
下記画像は、この本のクイックソートに関する部分の一部の写真なのですが「分割の方法」というのは、画像一枚目の真ん中下に書いてある基準値tでtより大きいものと小さいものに分ける処理を指しています。私の解釈だと最後の画像のクイックソートの関数がNico Lomutoの分割法を使ったクイックソートの関数の疑似コードだと考えたのですがどうでしょうか

イメージ説明
くジ説明
イメージ説明

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

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

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

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

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

guest

回答2

0

自己解決

解決しました。感謝です

投稿2020/07/13 05:01

konnitiha2

総合スコア30

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

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

0

1は大体正しいです。

強いて言うならば、分割後に再度組み立てる処理が必要です。多分省略したのでしょうが。

###2の後半以降がよくわかりません。
まず、基準値(pivot)の選び方は重要です。これは間違いありません。が、「分割の方法」の意味が分かりません。データ構造の話だとすればアルゴリズムよりも先に確定すべきです。

投稿2020/07/12 12:15

HogeAnimalLover

総合スコア4830

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

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

konnitiha2

2020/07/12 12:46

解答ありがとうございます。 「分割の方法」がわからないというご指摘をいただき質問内容を更新させていただきました。 よろしければ、回答よろしくお願いします。
HogeAnimalLover

2020/07/12 14:06

この資料の通りならそうですね。多分私の回答の、再度組み立てる処理、を兼ねているように見えます。
konnitiha2

2020/07/13 04:12

回答ありがとうございました。 助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問