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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

Q&A

解決済

2回答

2027閲覧

シュワルツ変換について

退会済みユーザー

退会済みユーザー

総合スコア0

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

0グッド

0クリップ

投稿2015/04/05 14:49

ソートアルゴリズムのシュワルツ変換について質問です。

加工用の一時領域を作るためメモリが、多く必要になるのは理解しています。
しかし、計算速度が向上する理由がピンときていません。
今のところ、加工とソートを2つに分けることで命令が単純になり向上するという認識なのですが、それであっていますか?

加工とソートを2つに分けることで、計算速度が上がる物理的な理由を教えて頂けますでしょうか?

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

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

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

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

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

guest

回答2

0

ソートは
・2つの要素の比較
・配列の操作
を繰り返しますが、
単純な要素でなく、要素を加工した値で比較したい場合、
・2つの要素を加工
・2つの加工した要素の比較
・配列の操作
となります。
ソート開始から終了までで、各要素はたいてい複数回参照されるので、
これだと同じ要素に対して何度も加工を行うことになります。

そこで、加工済み配列を用意し、
加工済み配列使ってソートすれば、各要素に対して一回の加工で済みます。

投稿2015/04/05 15:29

ozwk

総合スコア13521

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

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

退会済みユーザー

退会済みユーザー

2015/04/07 15:43

具体的なイメージが掴めました。 ありがとうございます!
guest

0

ベストアンサー

シュワルツ変換を使わないソートの場合は、ソートキーを参照するたびに毎回ソートキー生成を行います。
シュワルツ変換を使ったソートは、ソートキー生成の回数が1要素につき必ず1回で済むようになります。

ソートでのソートキーへのアクセスはほとんどの要素で複数回行われますので、ソートキー生成のコストが高い場合には、シュワルツ変換の方が実行効率が良くなります。

参考URL:
シュワルツ変換の実行効率 - 英語とプログラミング気まぐれ日記

投稿2015/04/05 15:14

argius

総合スコア9390

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

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

退会済みユーザー

退会済みユーザー

2015/04/07 15:43

解説 + 参考URLをのせていただいたので、ベストアンサーにさせてもらいました。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問