OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

Perl のソート関数

  • 暇なときにでも
  • 質問No.148673
  • 閲覧数129
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

 Perl を使い始めて数年になり、雑誌の隅っこに載る程度のフリーソフトなら作るようにもなりましたが、未だにソート関数の内部構造がさっぱり分かりません(^_^;

 Perl の解説本も数冊、ホームページに至っては十数ほども有名と言われているところを回ってみましたが、ほとんどの Perl ユーザーがソート関数の使い方を丸覚えにしているようで、的を得ない解説しか載ってません。

 そこで質問ですが、$a と $b には、いったい「何が」「どういうタイミングで」入ってきているのでしょうか?(配列の値が比較されるときに呼び出される、ということは分かりますが)
 当たり前に考えれば、ソート関数というものは全てをユーザーに任せて関数を書かせるか、でなければフルオートで全てやってくれるソート関数を用意するか、どちらか1方しかないはずです。

 なのに、Perl のソート関数は途中部分だけユーザーに書かせるという器用なことをやってます。
 これはいったいどういう構造になっているのでしょう?
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

> 当たり前に考えれば、ソート関数というものは全てをユーザーに任せて関数を書かせるか、でなければフルオートで全てやってく
> れるソート関数を用意するか、どちらか1方しかないはずです。

そのふたつ以外に、もうひとつ当たり前があります。

ソートは、要素の大小比較をして、逆転していれば要素を入れ替える、という
ことをやるわけですが、「要素の大小比較」というのは、ときと場合によって
いろいろ変わります。

というわけで、その変わるところ、つまり「やり方」をソート関数に渡すという
方法があります。

これは perl に限ったことでは無いのですが、(もう、古い言い方なんですが)
コールバック処理と言います。

ある処理(この場合は大小比較)を呼び出す側で用意して、何らかの処理(ソート)
から呼び出す、つまり、呼び戻すように見えることから、この名前がついています。


処理自体を指定する手段がある言語の標準的なソートは、大体こういう形式
になってます。私が知っているところだと C/C++、ruby なんかがそうです。
お礼コメント
noname#25358

 ありがとうございます。

 もしかして、比較結果で入れ替えるかどうか判断してるだけなんでしょうか(笑)
 だとしたら俺は何を悩んでいたのだろう(^_^;
投稿日時 - 2001-10-10 15:53:23
-PR-
-PR-
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ