- ベストアンサー
シェルソート,クイックソート
シェルソートは比較数が小さいとクイックソートよりも早いですが,なぜでしょうか?
- wabisabi_2004jp
- お礼率69% (23/33)
- その他([技術者向] コンピューター)
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一概には言えないかもしれませんが、 一般的には、手順が難しくなるほど 要素数が少ない場合にはその手順に要する時間の割合がバカにならないので比較的遅くなる傾向があります。(逆に要素数が大きい場合には、手順(アルゴリズム)に要する時間より効果が大きくなります。 おおざっぱにいって、 シェルソートとクイックソートが要素数が小さい時に差が大きめに出るとすると、関数の(再帰)呼び出しの部分で時間が取られているのではないかと思います。 実際の場面ではプロファイラーとかを使わないと、どこでより多くの時間を消費しているかとかの分析はできません。 また、クイックソートは、要素の並びによっては非常に効率が悪くなるので(こういう検討をするには)要素の並びがランダムになっている必要があります。 比較数というのを要素数だと理解して回答してみましたが、勘違いしてたらすみません。
その他の回答 (1)
- notnot
- ベストアンサー率47% (4848/10261)
ロジックが簡単だからですね。 ソートの速度はよくデータ個数(N)の何乗に比例するとかで比較されます。クイックソートはNlogNに比例、シェルソートはNの1.2~2乗に比例なんで、Nが非常に大きいとクイックソートが早いですが、同じ比例するといってもそれぞれ比例係数が違います。Nが小さいとロジックが簡単で比例係数が小さいソートのほうが早いです。 携帯電話の料金で、どれくらい電話を使うかによって最適な料金プランが人によって異なるのと同じです。ほとんど電話を使わないなら、単純に基本料金が安いものがよい。
お礼
ありがとうございます。
関連するQ&A
- クイックソートでソート数が1個や2個でも正しくソートできるのでしょうか?
使用上意味がないのですが、クイックソートでソート数が1個や2個でも正しくソートできるのでしょうか? 引数に quick_sort( a[], 0, n - 1 )と、n-1となっているために nは0は無理そうですが、n=1なら0でうまくいくかなと思うのですが、 原理上、どうなっているのでしょうか? 詳しい方教えて下さい。 http://www.daccho-it.com/program/algo/quick.c
- 締切済み
- 数学・算数
- バブルソートとクイックソート
まだソートについて勉強し始めたばかりですが バブルソートは対象の総数が増えるとそれに伴い比較回数は増加するのに対し クイックソートはそれほど増加しないのはなぜでしょうか?? 検索してみてもプログラムが書いてあってよくわからないので... 根本的なところなのでしょうがどなたか教えてください!
- ベストアンサー
- C・C++・C#
- クイックソートって??
どこに載せればいいのかわからなかったので ここに載せてみました。 クイックソートってなんですか?? 簡単なアルゴリズムで答えてください!? (自分も何言っているのかわらない??) 簡単に言えばクイックソートってナに?? です。 よろしくお願いします。 わかるように簡単でね!!
- ベストアンサー
- その他(プログラミング・開発)
- クイックソート
クイックソートには再帰を使わない方がいいんですか? 再帰を使わないとすると明示的にスタックで管理することになると思うのですが,整列させたい要素数がバラバラの時はどのようにすればよいですか?
- ベストアンサー
- Visual Basic
- クイックソートで・・・
C言語で再帰を利用してクイックソートを書いたのですが、データ数が大きくなるとプログラムが途中で終了してしまいます。これってスタック領域がなくなってしまったからでしょうか?お願いします。
- ベストアンサー
- C・C++・C#
- クイックソートで並べ替え
友人から情報処理の質問を受けました。ですが、私では良く分からなかったので質問します。 2,4,8,1,6,5,2,7,3,7の整数をクイックソートで並べ替えよ。 また、比較回数を示せ(軸要素は先頭の2要素のうち大きいほうとせよ)。 よろしくお願いします。
- 締切済み
- C・C++・C#
- クイックソートの比較回数について
中央値をピボットとするクイックソートで、入力データ数が1024で昇順データの場合はO(nlogn)の関係より10240回の比較回数が得られる、というのは合っているでしょうか? ご回答お願い致します。
- ベストアンサー
- C・C++・C#
- バブル・ソート、クイック・ソート
N個(N=4,5,6)のデータが全て等しいデータ列(例えばN個の数字全部が1のとき)をバブルソートで並び替えたとき、データの交換回数は何回か。また、同じデータ列をクイックソートで並び替えたときはどうか。 という問題があるのですが、どう比較するのかがわかりません。詳しい方、説明よろしくお願いします。
- 締切済み
- C・C++・C#
お礼
その通りです、比較数=要素数ということでした。 ありがとうございます。