新規記事投稿
フォロー記事投稿
記事のキャンセル
From: 素人でGO!
<inagaki.ken@nifty.ne.jp>
Subject: Re: [Q] perl での 二つ以上のキーを用いたソート
Date: 1998/08/06 02:04:13
Reference: mesh.program/00525
8月6日に、いしどうさんは書きました。
>青本はお持ちですか? (^o^)
いえ、持ってないです(^^;
>>ソートについてです。
>>配列@DATAは複数のフィールドを持つとします。
>>つまり複数のキーを用いたソート(優先順位はあります)です。
>「複数のフィールドを持つ配列」というのがよくわからないんですが…
えーと、要するに多次元配列ってことでいいと思います。
>sort の比較関数をうまく作ってやればよさそうな気がします。
sort { $hoge{$a} <=> $hoge{$b} }
みたいな感じでしょうか…一つのキーだとうまくいくんですけどね(;_;)
具体的な例を出します。
ある配列に
ファーストフードの名前、セットの名前、価格、おいしさ、お姉ちゃんのかわいさ
という内容が書かれているものがたくさんあるとします。
まずおいしいものを食べたいので、おいしさ順にソートします。
A〜Eの五段階だとします。
それでも同じものがある場合は価格が安い方がいいですよね。
というわけでさらに価格の安い順でソートします。
それでも同じならかわいい子がいる店の方がいいだろう(笑)ということで
さらにソートします。
こんな感じで三段階(例えばですが)、ソートできるようにしたいわけですね。
で、第一段階のソートを @sorted とかに入れます。
それを第二段階のソートをかけると、第二段階のソート結果は出るのですが
第一段階の内容が反映されなくなっているのです。
それをどうにかしたいなぁと思ったのですが、意味は伝わりましたでしょうか?(^^;
二ヶ月ほど投稿がないので、誰も見ていないかもしれませんがどなたか教えて下さい。
よろしくお願いします。