新規記事投稿 フォロー記事投稿 記事のキャンセル
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 とかに入れます。
それを第二段階のソートをかけると、第二段階のソート結果は出るのですが
第一段階の内容が反映されなくなっているのです。

 それをどうにかしたいなぁと思ったのですが、意味は伝わりましたでしょうか?(^^;

 二ヶ月ほど投稿がないので、誰も見ていないかもしれませんがどなたか教えて下さい。
 よろしくお願いします。