リファレンスのソートの仕方を教えてください

このQ&Aのポイント
  • リファレンスのソート方法を知りたい
  • 検索してもリファレンスのソート方法がわからない
  • リファレンスのソートについて教えてください
回答を見る
  • ベストアンサー

リファレンスのソートの仕方を教えてください。

以下のリファレンスをnumの数字を基準にして昇順ソートで整えたいのですが、検索してみてもリファレンスのソートの仕方をレクチャーしてくれるところがありません。やり方を知っている方がいたら教えてください。お願いします。 ソート前のリファレンス。 $data = [ { num=> 1, id=> 'bss'}, { num=> 3, id=> 'blog'}, { num=> 2, id=> 'video'} ]; ソート後のリファレンス。 $data = [ { num=> 1, id=> 'bss'}, { num=> 2, id=> 'video'}, { num=> 3, id=> 'blog'} ];

  • Perl
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • uwi
  • ベストアンサー率74% (55/74)
回答No.1

こんな感じでしょうか? @{$sort} = sort {$a->{'num'} <=> $b->{'num'}} @{$data};

gothfotu
質問者

お礼

Thank you so much!!

関連するQ&A

  • クイックソートのソート

    2 8 7 1 3 5 6 4 という数字が並んでいて 4を基準に左から昇順にクイックソートするとしたら 2 8 7 1 3 5 6 4 2 8 7 1 3 5 6 4 2 8 7 1 3 5 6 4 2 1 7 8 3 5 6 4 (1) 2 1 3 8 7 5 6 4 2 1 3 8 7 5 6 4 2 1 3 4 8 7 5 6 8 というふうになりますが (1)の状態は8と7が交換されていますが これは間違いなのでしょうか 教科書に載っていたのですが

  • 数字のソート

    早速です。 以下のように頭に連番、 次の4項目が00~99までの数字の レコードがあります。 これを連番は崩さず、 4個の数字を昇順に並べたいのですが。 どのようにソート(コード)すれば宜しいでしょうか。 1<>8<>13<>27<>30<> 2<>20<>9<>1<>16<> 3<>5<>31<>36<>38<> 4<>52<>79<>18<>27<> 5<>23<>15<>9<>28<> 6<>38<>6<>45<>25<> ↓ 1<>8<>13<>27<>30<> 2<>1<>9<>16<>20<> 3<>5<>31<>36<>38<> 4<>18<>27<>52<>79<> 5<>9<>15<>23<>28<> 6<>6<>25<>38<>45<> 宜しくお願いします。

    • ベストアンサー
    • Perl
  • csvファイル内にてソートする方法

    ご協力お願いします。 あるログデータを取得したcsvファイルを作成しました。しかし、データ量も多く見やすいようにソートをかけたいのですが方法がわかりません。csvファイルの中身は以下のようになっています。 ___________________________ | 端末ID | ユーザーID | 日付 | 時間 | ――――――――――――――――――――――――― | ITD002 | 00000001 |2005/08/22| 11:00 | ――――――――――――――――――――――――― | ITD002 | 00000003 |2005/08/22| 21:00 | ――――――――――――――――――――――――― | ITD001 | 00000001 |2005/08/22| 12:00 | ――――――――――――――――――――――――― | ITD001 | 00000002 |2005/08/22| 18:20 | ――――――――――――――――――――――――― 以上のような中身になっています。レコード量は、もっと多いです。このランダムな順番に取得したレコードを 端末ID(昇順)ユーザーID(昇順)日付(降順)時間(降順)でソートする方法をご教授お願いします。

  • C言語 クイックソートについて

    以下の数字を用いて・・・・ num[10] = {21, 46, 87, 9, 32, 33, 57, 87, 12, 43} クイックソートで整列する時,データの入れ替え状況,配列の内容の変化について,データの入れ替え過程をプログラムでない形で説明をお願いします。アルゴリズムの特徴がわかる説明と入れ替え過程を示してほしいです。 以下の数字を用いてお願いします。 例: ●●で分割: {                    } ●●で分割: {                     }           ・           ・           ・           ・ 整列後: {                     }

  • ソートについて

    過去にも似たような質問を立てさせて頂いておりますが、今回はちょっと違うのかな?と思い、Qさせて頂きます。 jcode.plを使ってCGIを作成しています。 @data=(13,5,7,2,10,9,6)というデータがあり、これを下記のように何パターンかにしたいのです。(データの数字はサンプルです) 例:5-7-13、2-7-13、2-5-7、・・・etc 何を言いたいかというと、「フィールド1 - フィールド2 - フィールド3」や、「フィールド2 - フィールド3 - フィールド4」、「フィールド1 - フィールド3 - フィールド4」というように区切り、それを昇順にソートさせたいのです。 このような場合の記述方法を御教え願えますでしょうか?

    • ベストアンサー
    • CGI
  • excel VBA の条件をつけての列ごと並び替える方法がわかりません。

    excel VBA を最近学び始めたのですが、 ソートで、 4 8 3 1 7 8 8 2 8 9 6 2 5 1      ↓ 1 3 4 7 8 8 8 6 9 2 2 8 5 1      ↓ 1 3 4 7 8 8 8 6 9 2 2 1 5 8 と並び替えるソートのVBAがわかりません。一回目のソートで1行目を基準に列ごと昇順?に並び替え、二回目のソートで1行目の昇順を満たしながら二行目の数字を基準に列ごと昇順にソートしたいのです。 検索をかけて、バブルソートのVBAなどを見てみましたが、難しくて理解できません。(この前こそ、「かんたんプログラミング EXCEL VBA」を読んだ知識レベルです。) 昨日の18時からがんばっているのですが、一向にわからないです。。 お時間ありましたら、どなたか教えていただけないでしょうか?  

  • Access テキストデータのソートについて

    Accessでのテキストデータのソートの仕様で悩んでます。 例を挙げると・・・ テキスト型のフィールドに対し以下のようなデータを入力します。 フィールド1 9-1 9-001 9-0001 90-1 90-001 900-1 900-11 9000-1 9001-1 90000-1 ここでフィールド1を昇順でソートをすると 90000-1 9-0001 90-001 9000-1 9-001 900-1 900-11 9001-1 90-1 9-1 という順になってしまい、並び方に一貫性が無いように思えます。 なぜこのような並びになってしまうのか? お判りになられる方、いらっしゃいませんか??

  • 数字文字列のソート方法

    文字列に数字を含むデータのソートを行うプログラムを C言語で作成したいのですが、どうすれば良いでしょうか? 具体的に言うと、a12、a2、a10という順序で並んでいる データを昇順にソートした場合にa10、a12,a2というように ソートせず、ちゃんとa2,a10,a12とソートされるように したいのですが、簡単にできるものでしょうか? 質問がわかりにくいかもしれないのですが、どうかご回答をお願いします。

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

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

  • エクセルのソート

    例えば、以下のような数字があり、これをB列の昇順でソートをかけた場合、B列にある5の数字を含む行が、1番下にくるとはずですが、そうなりません。なぜでしょうか? A列   B列 15200  1 15150  1 15150  1 15100  5 15000  1 セルに空白もありませんし、念のため手打ちで5と打ち直しています。範囲指定も、全部しており、問題ないと思うのですが、そうならないのは、他に何か原因があるのでしょうか?

専門家に質問してみよう