Perlでソート [Perl]

| コメント(0) | トラックバック(1)

またしてもソートネタ。

ネタ元はどうかく?org のお題で、データ同士の比較を行わないまじめなコードはそっちに投稿したので、ふと思いついた邪悪コードの方を載せてみます。

use strict;

use threads;
use threads::shared;

sub thread_sort
{
  my ($min, $max, $len, @data) = @_;

  (grep { $_ < $min } @data)
  ? thread_sort($min-1,$max,$len,@data)
  : do {
    my @thr;
    my $res : shared = '';
    for ( map { [ $_-$min, $_ ] } @data ) {
      push @thr, threads->create(sub {
        sleep $_->[0];
        lock($res);
        $res .= ($res ? ',' : '') . $_->[1];
      });
    }
    $_->join for @thr;
    split ',',$res;
  };
}

$,=', '; $\="\n";
print thread_sort(qw/-1 10 10 -1 9 4 8 9 6 3 9 5 2/);
print thread_sort(qw/1 10 10 -1 9 4 8 9 6 3 9 5 2/);

名付けてスレッドソート(ぉ

但し、データ数が多くなるとスレッド生成が終わらない内に1秒経ってしまうので、使い物になりません。

まぁ、あくまでもネタということで。

トラックバック(1)

トラックバックURL: http://floralcompany.jp/mt/mt-tb.cgi/153

どんなものかとみてみたら、私にとっては 既に3年前に通った道 でした。ツマンナーイ というだけではあれなので Boo で書いてみる うむ。... 続きを読む

コメントする

AUTHOR

  • turugina (虎王 剱奈)
  • E-mail: turugina {at} floralcompany.jp
  • pixiv
  • ニジエ

2014年5月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

アーカイブ

OpenID対応しています OpenIDについて
Powered by Movable Type 5.2.10

- 警 告 -

本サイトにはいわゆる「18禁画像」(イラスト)へのリンクが存在します。 未成年の方や、その手の画像に不快感を覚える方は、 該当記事(「えちぃの」及び「ちょっとえちぃの」カテゴリ) をご覧にならないようお願いいたします。

上記を理解した上で非表示のブログパーツを表示する
あわせて読みたいブログパーツ
ついった
drawr/pixiv/twitpic