
No.8ベストアンサー
- 回答日時:
#1です。
再登場。>具体的にはどんなデータを扱っているのでしょうか?
SQLのエンジンです。フリーで出してるんです。
どんなデータが来るか予測できないので、ソート方式の選定には苦労した記憶があります。
ちなみに、自分なりに実験した結果、俺が使ってるp-マージソートは、クイックソートと比べても遅延は少ししかないみたいです。
No.7
- 回答日時:
(1) 今ある言語のソート機能は基本的にクイックソートでしょう。
プログラマは2つのデータの比較方法だけを定義します。ソートアルゴリズムを1から組む必要は、いまは殆どありません。(2) 汎用的なソートの中で最速ですから、わざわざ他を使う必要は無いでしょう?そもそも、ライブラリをそのまま使うだけですから選択肢はありませんし。
(3) ソート済みの複数のデータを1つにまとめたい場合です。
No.6
- 回答日時:
(1)Cでは、qsort()が有るので良く使用します。
>メインメモリで使われていると聞きましたが‥
ほとんどのソートはメモリ上で行われます。
(2)数十件程度の場合は、バブルソートで済ませる場合
が有ります。
C以外の言語で、数百件から千件程度であれば、データ
領域と別にワークメモリを必要とせず、データの並び方
に影響を受ける事が少なく安定した速度を出せるので
コムソートを良く使用しています
(3)件数が多くメモリに余裕が無い場合に、他のソートと
組み合わせて使用されます。
No.5
- 回答日時:
(2)
競馬ゲームをサクッと組んだとき、リアルタイムで順位変動を表示する方法としてバブルソートを使用。
常時更新かつたまに1つだけ順位が入れ替わるだけなので、バブルソートでやるとほぼNで終了します。
No.4
- 回答日時:
(1) Cのqsort関数を使う場合に間接的に使いますね。
自分でソートアルゴリズムを書く場合は挿入ソートなどもっと簡単なアルゴリズムでお茶を濁します。
なお、クイックソートのアルゴリズムからすれば、メインメモリ以外のランダムアクセス・コストが大きい媒体上で実施するのは困難だと思います。
(2)平均的にはクイックソートが一番速いです。ただ最悪時は遅いので、これが問題になる場合はマージソートなどを使います。コームソートやバブルソートを実用している例は知りません。小さなソートでも比較ソートか挿入ソートを使いますし。
(3)マージソートが使われるのは2つの局面があります。
一つはメモリに入りきらないデータのソートです。
もう一つは比較キーが同じデータの順序を保存したい場合です。これは複数のキーで順にソートする場合などに必要です。この同一順位のデータ順序を保存する性質をstableと言い、マージソートはstableです。ちなみにJavaのライブラリではソートにstableを要求しており、JREの実装はマージソートを使っています。
No.3
- 回答日時:
(1)あらゆる場面で使われていると思います。
(2)交換回数は少ないのですがメモリ消費量が多いので、組込み用途など限られたメモリで処理をする時に他のアルゴリズムが使用されることもあるそうです。まあ、処理時間とデータの配置・件数と空きメモリ、安定ソートの必要性etcとの相談です。件数が極端に少ないとバブルソートの方が早いこともありますし。
(3)もとのデータがほぼ整列済である場合などかなと予想。
No.2
- 回答日時:
(1)
クイックソートを実装したC標準ライブラリqsort関数が「要素をメモリ上で入れ換える」と言う実装を行っているので、この標準関数を使う限りはメインメモリ上で行うしかありません。
(2)
要素の比較回数の平均を取ると、クイックソートが断然に比較回数が少なくなります。
但し、ソート前の要素の並びが最悪の場合は、クイックソートの実行速度(比較回数の多さ)はバブルソート並みにまで落ちます。
(3)
ソート済みの複数のファイルを結合する場合に使われます。
例えば、メインメモリが足りず一気にクイックソートするには巨大過ぎるファイルをソートする場合は、メインメモリ上でクイックソートが可能なサイズにファイルを分割し、分割した個々のファイルを別々にクイックソートして複数の中間ファイルに出力します。
それぞれの中間ファイルは個々にソート済みなので、それらを1つの巨大ファイルにソートして書き出す際に、マージソートを使用します。
No.1
- 回答日時:
単純なソートはほとんどクイックソートですね。
ソートってのは速度が命ですから、遅いソートは、アルゴリズムの勉強をする以外の役にはたちません。
よって、よほど特別で明確な理由がない限り、個人がプログラムを組むときは、クイックソート以外の手法に手を出すべき局面というのもちょっと思いつきません。
プロが実務で組むときはビンソートと組み合わせたりしますが。
ちなみに、よほど特別な理由というのを、俺自身1つだけ過去に持っていたことがあります。
フリーのデータ管理ソフトを作る際に、「同一であるデータの順序を保障したい」という妙な理由で、p-マージソートという特殊な手法を使っていました。
これは2次元配列を複数のキーによってソートするときに生じる問題でした。
今でもそのソフトにはp-マージソートが載っていますが、現在では全体処理をもっと速いアルゴリズムに変更していますので、これを使い続ける意味はなくなっています。
ですが、面倒なんでそのまま使い続けています。
クイックソートってのは、ネット上にホイホイ落ちてるようなサンプルを使うと、特殊なデータ配列のときにハングアップすることがあって、それを実務に絶えうる形に変更するのが手間だったんです。
ありがとうございます。スピードを要するデータ管理ではソートのアルゴリズムがかなり重要なのですね。具体的にはどんなデータを扱っているのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのソート方法について 1 2023/01/13 00:01
- クレジットカード イオンカード(WAON一体型)は、クレカ被害対策になる? 2 2022/10/12 18:04
- ノートパソコン あなたのパソコン(Windows限定)は何年使っていますか? 4 2023/05/27 08:04
- その他(プログラミング・Web制作) ラムダ式 3 2022/11/28 16:48
- iOS iPod nanoについて 2 2022/09/02 19:34
- 英語 What’s the meaning (of 〜)? はどのような場面の時に使いますか? 単語やフレ 4 2022/05/29 07:38
- その他(悩み相談・人生相談) スキルが足りないのか、周囲が嫌だと言ったのか、どちらですか? 0 2023/05/21 11:30
- その他(悩み相談・人生相談) スキルが足りないのか、周囲が嫌だと言ったのか、どちらですか? 1 2023/05/21 12:21
- 家具・インテリア 寝室に青いアクセントクロス。 寝室の一つの面に、青色のアクセントクロスを使おうと考えてます。他の面は 2 2022/12/14 11:32
- 面接・履歴書・職務経歴書 履歴書の本人希望記入欄は、一般的には面接担当者が希望を聞いてからメモ代わりに使いますか? 面接本人が 2 2023/07/05 23:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# DataGridView のヘッダーセ...
-
配列の問題
-
System.IO.Directory.GetFiles...
-
構造体配列の並べ替え
-
C言語のCSV形式からのソート
-
10個の整数を入力して小さい順...
-
100万個の整数のソート
-
偶数奇数の判別!!
-
C言語・要素除去
-
listboxの並び替え
-
VB.NETでファイル名順にファイ...
-
構造体のソートに関して
-
DataGridViewのソートを止めたい
-
C++ 入力した3つのint型の整数...
-
javaのソートについて。
-
文字列をソートする方法
-
DataGridViewの複数列を連動し...
-
VBA基本構文の作り方 2列の...
-
C言語 配列の長さの上限
-
関数から配列を返すには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
C# DataGridView のヘッダーセ...
-
VBA基本構文の作り方 2列の...
-
C言語・要素除去
-
C# DataTableの行をソートしてD...
-
VB.NETでファイル名順にファイ...
-
構造体配列の並べ替え
-
あるディレクトリ内のファイル...
-
配列の問題
-
10個の整数を入力して小さい順...
-
2次元配列を複数項目でソートし...
-
構造体のリストをソートしたい。
-
DataGridViewソート時に先頭行...
-
DataGridViewのソートを止めたい
-
datagridviewの並べ替え
-
C++ 入力した3つのint型の整数...
-
DataGridViewの複数列を連動し...
-
Excelですべての組合せ(重複組...
-
C#のリストボックスで、クリッ...
-
VBScriptで重複レコードを削除...
おすすめ情報