• ベストアンサー

ソート(データの並べ替え)の逆概念はシャッフル?

ソートは、データの集合を一定の規則に従って並べること。 バブルソート、シェーカーソート、コムソート、選択ソート、 挿入ソート、シェルソート、ヒープソート、マージソート、 クイックソート、バケットソート、基数ソート、 逆写像ソート、ボゴソート、奇偶転置ソート、シェアソート などがあるそうです。 ではその逆概念の、データの集合を一定の規則に従ってバラバラにすることってなんといいますか? トランプ(カードマジック)でよく見かけるシャッフルのことでしょうか? ディールシャッフル、ヒンズーシャッフル、オーバーハンドシャッフル、リフルシャッフル、ファローシャッフル などがあるそうです。 それらを数学的に扱ったものってありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • proto
  • ベストアンサー率47% (366/775)
回答No.3

#2の方の意見と同じです。 一定の規則にしたがっているならシャッフルになっていませんよね。 思うに、ソートするした結果からもとの並びは再現できませんから、不可逆な過程じゃないですか? 1,3,2という並びも3,1,2という並びも昇順にソートすれば、1,2,3で同じになります。 もともと1,3,2だったのか3,1,2だったのかとかは決められません。 ソート前とソート後が1対1で対応しないからです。 そういう意味でソートする過程で情報を捨ててしまっています。 1対1関数でなければ逆関数が定められないように、ソートにも逆の過程は定められないと思いますよ。

その他の回答 (2)

  • slate
  • ベストアンサー率41% (14/34)
回答No.2

ランダマイズ なんかかなあ?自信ないです。 要は乱数を使って番号つけたり抽出したりすることなんですけど。 一定の規則にしたがってばらばらにする、ではないですね。 ? 一定の規則にしたがったら、ばらばらじゃないですよね。 ?

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

>それらを数学的に扱ったものってありますか? 数学で「シャッフル」について突き詰めると「乱数」に行き当たります。 なぜなら「すべての要素に対して端から順に、乱数によるランダムな番号を付け、その番号に基づいて昇順か降順でソートする」のが「シャッフル」になるからです。 「乱数」なら、数学で扱う分野なので、色々な文献が出ています。

関連するQ&A

  • 五十音の並べ替えsortを教えて下さい。

    はう ぱあ ばい ↓sort はう ばい ぱあ 五十音でsortして以下のようにする方法を教えて下さい。 ぱあ ばい はう よろしくお願いします。

    • ベストアンサー
    • Perl
  • データのシャッフルについて

    以前、データのランダムな並べ替えについて質問したことがあり(Q.725588)、その時に回答して頂いたコード(その時はJavaScriptでの質問でした)をPerlにも移植(というほど大げさなものでもありませんが・・・)して使っていました。 そんなこともありQ.944003「公平なランダム」を興味深く見ていたのですが、こちらではコードは示されずに終了してしまいました。まぁ、ここまで書いてあれば後は実装するだけなのですが、素人に毛が生えた程度の私では、よりよいコーディングなど望めません。熟練のPerl使いの方ならどのようにコーディングするのだろう、などと思い、質問を投稿する次第です。 ちなみに私がQ.725588を参考に書いたコードは、次のようなものです。 sub shuffle {   my @list = @_;   for (my $i = $#list; $i > 0; $i--) {     my $r = int(rand($i+1));     if ($r != $i) {       my $tmp = $list[$i];       $list[$i] = $list[$r];       $list[$r] = $tmp;     }   }   return @list; } Q.944003の中では、No.3やNo.4のアルゴリズムになるでしょうか。なお、No.2で示されたソートを使ったアルゴリズムは、私には理解できませんでした。 もっと速いコードや、よりPerlらしいコーディングなどがありましたら、ぜひ参考にしたいのでご回答をお願いいたします。 ※別に熟練のPerl使いの方でなくても構いません^^;

    • ベストアンサー
    • Perl
  • Excelでの逆の並べ替え

     いつもお世話になります。 店舗コード  店名 ○○○○   ×××× △△△△   □□□□ ☆☆☆☆   ※※※※ となっている表を、 店舗コード  店名 ☆☆☆☆   ※※※※ △△△△   □□□□ ○○○○   ×××× としたいのですが、簡単な並べ替えの方法を教えてください。  配達に出かける車の積み込みをするために、納品順と逆の順番で積み込みをするためです。よろしくお願いいたします。

  • データーの並べ替えについて

    中村さん100点 田中さん 30点 中川さん 80点 広瀬さん 60点 上記のデーターを得点の上位順に並べ替え テキストボックスに順位 名前 得点を表示させる 方法を教えてください 名前の配列 NAME(1)=中村 NAME(2)=田中 NAME(3)=中川 NAME(4)=広瀬 得点の配列 TOKUTEN(1)=100 TOKUTEN(2)=30 TOKUTEN(3)=80 TOKUTEN(4)=60 表示結果 1位中村100点 2位中川 80点 3位広瀬 60点 4位田中 30点

  • データの並べ替え

    すいません。もしかしたら出ている質問かもしれませんが見つからなかったので質問させてください。 やりたい事は、既存のCGIで出来たデータを新しいCGIに合う様に変換させたいです。 えっと、今使用しているCGIがあるのですが、別のCGIに変更したいと思っています。 で、今までのデータをそのまま使用したいのですが、やっぱり、データが入っている順番が違ったりします。 例えば 元)名前,mail,URL,コメント,Pass… 新)名前,pass,コメント,mail,url… こういうのを、新しい並びに一括変更するようなソフトって無いのでしょうか?新しいCGIのデータ書き込みを元のと同じように並べ替える手もあるとは思いますが、何か、新しい方は高性能そうなかんじのなので出きればデータのみを変更したいのです。 または、普段、こうしてるよ。とかご意見を聞かせていただけると嬉しいです。 宜しくお願いします。

    • ベストアンサー
    • Perl
  • データの並べ替え

    関数を使ってAが商品名、Bが数量の表を数量が多い順番に上から 抜き出して別のところに並び替えるにはどうしたら良いでしょう。  A   B りんご  3 なし   1 くり   5 となっているのを  A   B くり   5 りんご  3 なし   1 へ 環境はExel2002です よろしくお願いします

  • こういうデータの並べ替えってできるのでしょうか?

    データベースについて疎いもので、どうしていいものか分かりません。 例えば、 |A|あ| | | | |B|あ|い| | | |C|あ|い|う| | |D|あ|い|う|え| というテーブルを |あ|A|B|C|D| |い|B|C|D| | |う|C|D| | | |え|D| | | | という風に並べ替えたりできないのでしょうか? データは全てテキスト型なので、クロス集計もできないのかな、 と思い、途方にくれております。どなたか、こんな方法がある、 というのがございましたら、ご教授願います。    

  • データの並べ替え?

    テキストデータに数値が入力されています。 数値,数値,・・・・,数値,[改行] 数値,数値,・・・・,数値,[改行]   ・   ・   ・ 数値,数値,・・・・,数値, こういう感じのデータです。 このデータの,(カンマ)の部分をタブ(orスペース)に置き換えて 数値 数値 ・・・・ 数値[改行]   ・   ・ 数値 数値 ・・・・ 数値[改行] こういうデータにしたいと思っています。 しかし、横一列のデータ数が512なので(縦は256)、 エクセルでは読み込めません。 フリーソフトでこういうデータ整理のできるソフトは ないでしょうか? よろしくお願いします。

  • データの並べ替えについて

    A1からA10まで商品ナンバーが入ってます。その表示方法はC-2というようにアルファベット・ハイフン・数字です。A1のセルにはC-2、 A2のセルにはA-10、A3のセルにはA-5、A4のセルにはC-1・・・と入ってるとします。データの並べ替えを行うとA-10.A-5.C-2.C-1・ ・・となります。できれば、ハイフン後の数字も並べたいのです。(A-5.A-10.C-1.C-2・・・というふうに)どうしたらよいのでしょうか?お願いします。

  • データの並べ替え

    40万行くらいあるデータベースの並べ替えをしたいのですが、エクセルでは6万行くらいしかインポートできません。データを分割すれば良いのかもしれませんがなるべく一つのデータとして扱いたいのです。良い方法はないでしょうか?