トップページ > プログラム > 2015年09月16日 > zgtxEZCv

書き込み順位&時間帯一覧

31 位/142 ID中時間01234567891011121314151617181920212223Total
書き込み数1100000000000000000000002



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
プログラミングのお題スレ Part7 [転載禁止]©2ch.net

書き込みレス一覧

プログラミングのお題スレ Part7 [転載禁止]©2ch.net
784 :デフォルトの名無しさん[sage]:2015/09/16(水) 00:38:04.82 ID:zgtxEZCv
>>783
左側の新しい項の入れ替えに移行し右側の並びを一式リセットするためのsortは
reversieでよいはず。これにより並べ替えのオーダーをNlogNからNに低減できる。
また項を入れかえる対象の要素を検索する繰り返しは、その項より大きくかつ最も小さい
値の要素を探すので、平均行程1/2で打ちって検索の計算量も半減することができる。
それから、もう少しコンパクトかつ可読性ある書き方ができるはず。
プログラミングのお題スレ Part7 [転載禁止]©2ch.net
786 :デフォルトの名無しさん[sage]:2015/09/16(水) 01:04:42.91 ID:zgtxEZCv
use feature qw{:5.16};

sub next_permutation {
 defined $_[1] and (next_permutation(@_[1..$#_]) or
  ($_[0] lt $_[1]) and
  do {
   for (1..$#_)
    {$_[0] lt $_[$_] ? $i = $_ : last}
   @_[0, $i] = @_[$i, 0];
   @_[1..$#_] = reverse @_[1..$#_];
   1 })
 }

#@a = split '', 'aaabc'; # 'aaaaaaaaaaaaaaaabc';
@a = split '', '112334556';

say join '', @a;
say join '', @a while next_permutation @a;

こんな感じな。sortをreverseにしたとき、ぐっと速くなった。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。