ベストアンサー ソートについて 2011/07/25 17:05 今、色々なソートのプログラムを作っているのですが、 ソートにおいて、実行速度と実行時の使用メモリ、どちらを重要視しますか? みんなの回答 (2) 専門家の回答 質問者が選んだベストアンサー ベストアンサー kmee ベストアンサー率55% (1857/3366) 2011/07/25 19:38 回答No.2 ケースバイケースで、要求される物を見極めて、ですね。 普段は、早さ(速さ、ではありません)を求めます。 unixのsortコマンドを使う、言語や型にソート関数とかソートメソッドとかがあったら使う、過去に作ったものをコピペする。 1、2度しか使わないプログラムの実行速度を数分削るために、何時間もデバッグしたくないですから。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 その他の回答 (1) noname#194317 2011/07/25 17:39 回答No.1 > ソートにおいて、実行速度と実行時の使用メモリ、どちらを重要視しますか? それは時と場合、要求仕様によりけりです。メモリに余裕がないと、速度を犠牲にしてでも効率最優先にしなければいけないし、逆の場合は割と自由にできますよね。でも要求仕様が決まっていたらそれに沿って作るけど、どうしても要求仕様を満たせない場合はどこかで妥協しないといけない。 個人の趣味の場合は…速度と効率をどこまで追求できるか、やれるところまでやってみるって感じですかね。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発その他(プログラミング・開発) 関連するQ&A 実行計画の「メモリを使用したソート回数」と「ディスクを使用したソート回 実行計画の「メモリを使用したソート回数」と「ディスクを使用したソート回数」は なにによって変わってくるのでしょうか? メモリの容量におさまる程度のソートでしたら「メモリを使用したソート回数」で メモリにおさまらないくらいの大量データのソートならば「ディスクを使用したソート回数」と いうことでしょうか? Oracleのソート Oracleのソートは、メモリソートが使用されているのでしょうか?もしくは、ディスクソートが使用されているのでしょうか?また、そのメモリや、ディスクとは、OSのメモリ、ディスクと考えてよいのでしょうか? 初心者で申し訳ありません。ご教授ください。 C言語、ソートの効率を考える問題について 繰り返しソートとバブルソート、改良バブルソートの中でどれが一番効率的であるかを理論的な比較回数やプログラムの量、使用するメモリの量から考えたいんですけどわかりません。教えてください。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム VBA Sortメソッドについて VBA初心者です。 並べ替えをしたくてSortメソッドというのを使っているのですが、 Sortメソッドの後にプログラムを書くと 「実行時エラー'1004':アプリケーション定義またはオブジェクト定義エラーです」 と出てしまいます。 Worksheets(sheets).Range("A1:D30").sort _ Key1:=Range("B2"), _ Header:=xlGuess, _ MatchCase:=True, _ SortMethod:=xlPinYin ↑こんなプログラムを2個続けて(sheetsを変えて)実行させ、 その後にもいろいろ続けて書きたいのですがどうしたらいいのでしょう。 「:=」という書き方を初めて使ったのでよく理解できていません。 ご教授いただけると助かります。 Perlのソートについて ハッシュを利用して今ソートできるプログラムを作成したのですが、 重複するデータは除外されてしまうようで、どうしたら除外されずに ソートできるかを教えていただきたいです。 <例> 文字 よみ No 橋 はし 1 橋 はし 3 箸 はし 2 というデータがあったとして、今のプログラムを実行すると・・・ <結果> 箸 はし 2 キーがよみなので3番目のデータだけ残ります。キーを漢字に したとしても1番目のデータは残らないのですが、どうしてらよいのでしょうか。 <理想的な結果> 橋 はし 1 箸 はし 2 橋 はし 3 一番いいのが上のような結果で、Excelのソートのような感じで、第1キーはよみで第2キーはNoとかのソートはPerlでできないでしょうかね?? どなたか分かる方がいたら教えていただきたいです。 よろしくお願いします。 ソートについて(その他質問あります) こんにちわ。Cプログラム初心者の学生です。 友達のプログラムについての質問なので詳しくは説明できませんが、よろしくお願いします。 ソートのプログラム(いろいろなソート)を作ったのですが、ソートする範囲を6万以上(0~59999)にすると必ずエラーが出てプログラムが終了してしまいます。 最終的には10万以上の値をソートしたいのですが、エラーが出て困っています。 値の生成についてはランダムで、配列に格納してやるという形にしています。 やはり、配列数が0万以上はサポートしていないのか、メモリの問題でしょうか? これは私の質問ですが、処理の高速化についてアドバイスいただきたいです。私が知ってるのは、掛け算割り算はあまり使わない、なるべく値の受け渡しはポインタを使った方がいい・・・という程度です。 あとこれから初心者Cプログラマとしてステップアップしていくために重要なこととかあれば教えて下さい。 ちなみに今はMFCについて少し勉強しています。 まとまりの無い文になってしまいましたが、よろしくお願いします。 挿入ソートとマージソート 挿入ソートとマージソートの問題を解いているのですが、 途中で行き詰ってしまいました。 (問題文) サイズnの入力に対して、挿入ソートの実行には8n~2ステップかかり、 マージソートの実行には64nlnnステップかかる。 挿入ソートがマージソートに勝るnの値を求めよ。 補足:ln=eを底とするlog (挿入ソートがマージソートに勝る=挿入ソートがマージソートより実行時間が早い) 8n~2 <= 64nlnn 8lnn=n e~n=n~8 こういう感じで自分なりに考えてみたのですが、nの値をどのように出して良いのかわからず困っています。 どなたかご教授いただける方いましたらよろしくお願いします。 MSFlexGridのSortメソッドについて VBの勉強をしております。(WindowsXP、VB6.0) MSFlexGridのSortは、内部的にはどの種類のソートなのでしょうか? ご存知の方がおられたら教えていただけますでしょうか? 課題で、「実行速度の効率を重視する」という項目があるのですが、 自作でクイックソートした方が良いのかどうか悩んでいます。 サンプルデータを作成して計測すればどちらが早いか分かるかもしれないですが、ソートの種類だけでもご存知の方がおられたら教えていただきたく質問させていただきました。 以上、よろしくお願いいたします。 三菱電機 Q02H SORT命令 教えて下さい。三菱電機PLC(Q02H)を使い回路を作っているのですが、今回、SORT命令を使うことになりました。非常に便利なのですがイマイチ上手くいきません。シュミレータにてプログラミングマニュアルに書いてあるプログラム例を実行すると、格納されている数を上手く並べ替えてくれるのですが、現在、使用しているPLC(Q02H)を使う為、プログラム例にあるデバイスは使用できません。空きデバイスを確認し使用していないデバイスで試すのですがダメです。状態としては回路にてSM703をONしたのち、SORT回路を実行すると格納されている数を値の大きい順に並べ替えてデバイスの一番上まで送ってくれるのですが、SM703をOFFした状態でSORT回路を実行すると値が小さい順に並べ替えてくれるのですが、一番上まで値を移動してくれず、一番小さい値の格納デバイスからスタートしてしまいます。どこがいけないのでしょうか。 プログラミングマニュアルに書いてあるプログラム例 0 LD X0 1 OUT SM703 2 LD x10 3 SORT D0 K4 K1 M0 D10 4 END 私が実行したプログラム 0 LD X0 1 OUT SM703 2 LD X10 3 SORT D151 K11 K1 M1010 D430 4 END perlで比較関数を使ったソートの仕方 今、季節をソートするようなプログラムを考えています。 my @array = ('spring','fall','winter','summer'); my @sort = sort number(@array); sub number { if ($a < $b) { return -1; } elsif ($a == $b) { return 0; } elsif ($a > $b) { return 1; } } 実行結果:spring ,summer ,fall ,winter 比較関数を使用して、「春・夏・秋・冬」とソートできるようにしたいです。上のプログラムはまだ途中なんですが、この場合比較関数はどのように実装すればうまくソートできるんでしょうか?分かる方、よろしくお願いいたします。 動作の速度について。 WS011SHを使用しています。 データ記憶用メモリもプログラム実行用メモリも十分空きがあり、実行中のプログラムもなく、送受信メールもそんなにない状態にあるのですが、メールをうつ時やいろいろなプログラムを実行する時の動作速度が遅いです。 動作を速くするにはどうしたら良いでしょうか? Sortコマンドメモリーオーバー sortコマンドで2GBのファイルをソートしよとしたところメモリオーバーのため失敗しました。 sortコマンドの最大メモリーは5GBを指定しています。(sort -S 5000000) そこでこれを解決するために幾つか質問があります。 1. -Sで最大メモリを指定しない場合の最大メモリはいくらになるのでしょうか? 2. Unixのsortコマンドは巨大ファイルをソートするために用途として使用するのに向いているのでしょうか?(使用することはあるのでしょうか?) 3. 解決方法がありましたら宜しくお願いいたいます。 4. 代替案がありましたら宣しくお願い致します。 (メモリーはなるべく消費しない方法) 宜しくお願い致します。 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム SORTについて お世話になります。 下記構文でソートさせているのですが、 ”台帳”シートをアクティブにしている場合はVBA実行される のですが、別のシートをアクティブにしている場合はデバックに なってしまいます。(実行時エラー’1004’) 別のシートを開いていても下記のソートが実行される様にしたい のですが、どの様したら良いかご教示頂きたく宜しくお願い申し 上げます。 記 Sub 台帳ソート() Dim myrhg As Range Dim myar As Variant Dim i As Long Set myrng = Sheets(\"台帳\").Range(\"a1\").CurrentRegion myar = Array(1, 2, 3) With myrng For i = 0 To UBound(myar) .Sort key1:=Cells(1, myar(i)), Order1:=xlAscending, header:=xlYes Next End With Set myrng = Nothing End Sub バブルソートとクイックソート まだソートについて勉強し始めたばかりですが バブルソートは対象の総数が増えるとそれに伴い比較回数は増加するのに対し クイックソートはそれほど増加しないのはなぜでしょうか?? 検索してみてもプログラムが書いてあってよくわからないので... 根本的なところなのでしょうがどなたか教えてください! これって何ソート? ソートの関数ってものを一回作ってみようかと思って 単純に考えて思いついたのがコレなんですが このやり方ってなんか名前があるんでしょうか? コレって速度的にはどんなもんなんでしょうか? function sepSort(&$arr){ $lower=array(); $upper=array(array_pop($arr)); foreach($arr as $n){ if($n<$upper[0]){ $lower[]=$n; }else{ $upper[]=$n; } } if(isset($lower[1]))sepSort($lower); if(isset($upper[1]))sepSort($upper); $arr=array_merge($lower,$upper); } メモリはジャブジャブ使いますが バブルソートよりははやいみたいです SORTについて お世話になります。 下記構文でソートさせているのですが、 ”台帳”シートをアクティブにしている場合はVBA実行される のですが、別のシートをアクティブにしている場合はデバックに なってしまいます。(実行時エラー’1004’) 別のシートを開いていても下記のソートが実行される様にしたい のですが、どの様したら良いかご教示頂きたく宜しくお願い申し 上げます。 記 Sub 台帳ソート() Dim myrhg As Range Dim myar As Variant Dim i As Long Set myrng = Sheets("台帳").Range("a1").CurrentRegion myar = Array(1, 2, 3) With myrng For i = 0 To UBound(myar) .Sort key1:=Cells(1, myar(i)), Order1:=xlAscending, header:=xlYes Next End With Set myrng = Nothing End Sub ソートのプログラム Fortranなのですが、実数のソートプログラムを作る必要があります。 x(1),...x(20)ぐらいの配列に実数が入っていて小さい順番に並べるというものです。ソートプログラムは何種類かあると思います。数千回ぐらいやるので速いほうがいいです。 ソートプログラムのソースなどを公開しているサイトがないでしょうか。検索しても発見できませんでした。やっぱりサブルーチン集を買うなどするのがよいでしょうか。自分で作ってもよいですが、ネット上に公開されているようなものを収集して作ってみたいと思っています。 よろしくお願いします。 ちょっと特殊なソート ソートプログラムを作りたいんですが、ちょっと特殊なんです。 入力データとして 5 2 4 8 1 4 みたいに、スペースで区切られた数字および文字列があります。それをスペースまでを一区切りとしてソートしていきたいのです。上の例だとこんな感じ。 2 4 5 1 4 8 どういう風に設計するのがいいと思いますか? シェルスクリプトに埋め込みたいので、できるだけコードを短くしたいのですが… 教えてください。 100万個の整数のソート 2491 482 112 .. 1044 のように、100万個の整数をテキストファイルから読み込んで、ソートするプログラムを作ることになりました。 これをjavaでやるのは現実的でしょうか? (1日で終わる?) java だと Arrays.sort というメソッドがあるとまでは聞いたのですが、個数が多くてもプログラムがちゃんと動くのか不安です。 ソートにかかった時間を測りたい。 初心者です。クイックソートとか挿入ソートとかのかかる時間を測るためにはどうしたらいいでしょうか?かかった時間を表示させるプログラムを書くのは可能でしょうか??宜しくお願いします。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など