[過去ログ] Perlについての質問箱 64箱目 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
837(2): 2020/12/09(水)09:35 ID:sn/SI4a+(1) AAS
>>833
こんな感じかな。デバッグはしていないが。
@newlist = sort compare @oldlist;
sub compare{
my ($ap, $bp) = @_;
($ap1, $ap2) = $ap=~/([0-9]+)\-([0-9]+)/;
($bp1, $bp2) = $bp=~/([0-9]+)\-([0-9]+)/;
return 1 if $ap1 > $bp1
return -1 if $ap1 < $bp1
# $ap1 == $bp1;
return 1 if $ap2 > $bp2;
return -1;
}
838: 2020/12/09(水)10:27 ID:LWKBPFtb(3/7) AAS
>>836>>837
それだと、要素の比較のたびに、値の変換処理が行われる。
比較は何度も行われるため、変換処理が軽くない場合、ソート全体としてかなり重くなりうる。
すくなくとも「スマート」とは言えない。
そこで、変換結果をキャッシュするような形になるのがシュワルツ変換。
知らんならググれ。
870(1): 2020/12/11(金)22:41 ID:pFqzegRi(1) AAS
>>837 だが、実は、このコードは、オレが実際に、数字とかアルファベットとかが
複雑に絡んだ文字列を、ある規則に従ってソートするために作ったものを
流用したんだ。だから、応用範囲が広いという点では、これがいいと思うけどな。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.032s