• 締切済み

中央値をソートせずに求める

foomufoomuの回答

  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.1

データの値範囲が広かったりすると、じつは低速なバケツソートを使うという条件なら、 1.始めは荒い分割の(少ない数の)バケツを用意し、1回目のバケツソートを行う。 2.各バケツ内のデータ個数を数えて、n/2番目のデータが含まれるバケツを取り出す。 3.その1バケツを、また1~2の方法でバケツソートする。 4.バケツのデータが1/2番目のデータ1個だけになったら、処理を終わる。 これでは、「ソートせずに」にはなっていませんが、「全部をソートせずに」という事にはなっている??? バケツソートと言うよりは、クイックソート(オーダーはO(n*log(n))ですが。

関連するQ&A

  • phpでのソートについて

    phpのソートについて教えてください。 以下のようなカンマ区切りのログファイルlog.txtがあるとしまして、 100,200,a,b,c, 300,100,d,e,f, 500,60,g,h,i, 50,300,j,k,l, 1000,60,m,n,o, このデータから 1番目のデータ(数値)が2番目のデータ(数値)より大きいデーターのみを対象にして ※つまりは以下のみ対象 300,100,d,e,f, 500,60,g,h,i, 1000,60,m,n,o, ここから1番目のデータ(数値)から2番目のデータ(数値)を引いた数が大きい順に ソートしてファイルに保存させたいのですが、 200,d,e,f,(300-100なので200) 440,g,h,i,(500-60なので440) 940,m,n,o,(1000-60なので940) ↓ ※最終的にこの順番で新しいログファイルnewlog.txtへ保存させたい 940,m,n,o, 440,g,h,i, 200,d,e,f, これらの処理を効率よく1度で行う方法はございますでしょうか。 わかりにくい説明で申し訳ありません。 お忙しい中恐縮ですがご教授いただけましたら幸いです。 何卒宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 社員IDのソート

    社員IDの桁が混在しています。 社員IDでorder byすると 0001 0011 100 1200 123 1234 321 となります。これを 100 123 321 0001 0011 1200 1234 と桁数別にソートしたいと考えています。 ちなみにVARCHARです。 order by 以下うまくソートする方法が知りたいです。 お願いします。

  • ソートの計算量などについて

    こんにちは ソートに関することの質問です。 1.バブルソートの計算量を出す式ですが O(n^2)=O(n-1)*O(n/2)*O(1)=O(n)*O(n)=O(n^2) で合っていますでしょうか? 2.クイックソートの(平均)計算量が nlog n(底は2)になるのは、なぜなのかを わかりやすく教えて下さい。(できれば式も) 3.クイックソートが最も高速に実行されるのは、ピボットの要素が真中にある場合で、反対に最も効率が悪いのはピボットが端にある場合ですが、この理由をやさしい言葉で教えて下さい。 どなたか教えて下さい。 よろしくお願いします

  • ヒープソートは2重ソートできない?

     ソートに関して詳しい方、相談にのっていただけたらと思います。  CGIを使ってヒープソートするロジックを組みました。  そのルーチンはただ単項データをソートするだけでなく、たとえば、配列変数 n1 と 配列変数 n2 にそれぞれデータが入っていたとき、n1 をソートすると、それに連動して n2 の中身も一緒にソートされます。  言うならば、バラバラに並んだビデオテープを番号順に並べ替えると、一緒にタイトルも並べ変わる感じです。  ところが、配列 n1 をソートしていてたまに同じ数字が入っていることがあります。そういうときは n2 の順にしたいのです。  そこで、先に n2 をソートしてから n1 をソートするといいのではと考え、そのようにプログラムを組んでみました。  ところが実際には、n1 をソートした瞬間に、せっかく並べ替えた n2 の内容がバラバラになってしまうのです。  「n1 の内容が同じ場合は n2 を昇順に並べる」という処理を記述していても、実際には n2 の内容はバラバラです。  これはヒープソートを使用している限り仕方のないことなのでしょうか。あるいは何らかの解決方法を知っている方、よろしくお願いします。

  • クイックソートの比較回数について

    中央値をピボットとするクイックソートで、入力データ数が1024で昇順データの場合はO(nlogn)の関係より10240回の比較回数が得られる、というのは合っているでしょうか? ご回答お願い致します。

  • ソートの作りかた!

    ソートの作りかた! ソートを作ろうと思うのですが作り方がわかりません>< 色々な検索エンジンで調べたのですが 作る方法が乗っているのが見つかりませんでした! どなたか作り方を教えてくださると嬉しいです。 こんな感じのが作ってみたいです↓ http://korason.o-oku.jp/dsort.html

  • Excel2010 VBA sortについて

    現在Excel2010VBAを使って、化学のデータからスペクトルを出すようなプログラムを考えております。 データは以下のような形です。 温度 1500 1500 1500 1400 1400 1400 時間 5 10 20 5  10  20 電流 1 3 7 11  12 13 このようなデータをまず、1行のデータの順番に並べてから、2行のデータ順に並べ替えたいと思っています。 しかし、Sortを用いたところ、実行時エラー1004RangeクラスのSortエラーが検出されてしまいます。 そこで、SortSpecialにすると、このエラーは検出されず、マクロは回るものの思った通りに整列されません。 Sheets("Rawdata").Activate Columns("A:BE").Sort Key1 = Range("A7") Order1 = xlAscending Key2 = Range("A10") Order2 = xlAscending Header = xlGuess Orientation = xlLeftToRight Excelの整列を使えばできてしまうことなのですが、VBAを用いてはできないのでしょうか? ExcelVBAを用いて、「行のデータ」基準にして「列を並べ替える」ことは可能なのでしょうか? どなたかご教授ください。 よろしくお願いいたします。

  • NULL値を含むソート

    MySQL4.0.20を使っています。 以下のようなデータをソートすると NULLが先に表示されます。 これをNULLを最後にして、数値のソートをかけたいです。何か解決策はありますか?2回に分ける方法しかないのでしょうか? nullと非null ◆元データ A --- 5 NULL 2 NULL 3 1 select A from xxx order by A asc; ●望まない結果 A --- NULL NULL 1 2 3 5 ●望む結果 A --- 1 2 3 5 NULL NULL ※話は変わりますが、4.1で日本語EUCの文字化けバグは直っているのでしょうか?

    • ベストアンサー
    • MySQL
  • シェルソートの計算量を求める方法について

    シェルソートで最悪の場合の計算量を求めたいです。 オーダーがnの二乗になるは知っていますが、その求め方、式がしりたいです。 要素数をN、感覚を4、2、1でお願いします。 考え方として各間隔のときのソート結果を無視して、各間隔時に単純挿入ソートと同様にして計算するのでしょうか? それとも、各間隔でのソート結果を考慮するべきなのでしょうか? できれば計算式と考え方、両方教えていただければありがたいです。 回答よろしくお願いします。

  • 中央値の大小関係について

    中央値の大小関係について n個のデータがあるとき、データの中央値 m を以下のように定義します。 中央値= 小さい方から (n+1)/2 個目のデータ 〔nは奇数〕   小さい方から n/2 個目のデータと n/2+1 個目のデータの平均 〔nは偶数〕 次にn個のデータを n1個とn2個のデータに分割(n1+n2=n)し、 n1個のデータの中央値を m1 n2個のデータの中央値を m2 とします。 このとき、  m1<m かつ m2<m となることは有り得るのでしょうか? 某プログラム言語を使ってデータ分析をしていたところ上記のような結果が発生しました。 直感的にはないと思うのですが。プログラムミスでしょうか?よろしくお願いします。