sleep sort する jQuery プラグイン

注意: sleep sort は、あくまでもネタです。ネタとして楽しんでください。
コメント欄でも指摘されてますが、実用に耐えるものではありません。
間違っても実用しようとか思わないように!

一部で話題沸騰中のソートアルゴリズム「sleep sort」を jQuery 用プラグインとして実装してみました。
via. 常識を覆すソートアルゴリズム!その名も"sleep sort"! – Islands in the byte stream

とりあえず、デモ。
下の textarea に数値をスペース区切りで入力してから「Sleep Sort!」をクリックしてください。
ソートされるはずです。



ソースはこんな感じ

jQuery.fn.sleep_sort = function() {
  var t = jQuery(this);
  var a = t.val().replace(/[^\s\d]/,'').split(/[\s]/);
  t.val('');
  jQuery(a).each(function(){
    setTimeout((function(num){
      return function(){
        t.val(t.val() + (t.val() !== '' ? ' ' : '') + num.toString());
      };
    })(this), Number(this));
  });
}

これで $('#sleepsort').sleep_sort(); とかってやると実行できますよ。

sleep sort する jQuery プラグイン」への3件のフィードバック

  1. 名無し

    これは信用できないソートです
    なぜなら遅延並列処理を数ミリ秒程度の差で実行した場合、高負荷時に容易に実行順序が逆転してしまうからです
    このソートだけをテストしている時にはまず問題は起きないでしょうが、実際アプリケーションに組み込むとかなりたちの悪いバグになってしまいます
    特に実行環境が多彩で、比較的実行速度が不安定なJavaScriptのような言語で実装することは間違っても避けなければなりません
    これは並列処理の危険性を無視したとても悪い見本です

    返信
    1. をかもと 投稿作成者

      名無しさん、はじめまして。

      これは信用できないソートです
      なぜなら遅延並列処理を数ミリ秒程度の差で実行した場合、高負荷時に容易に実行順序が逆転してしまうからです
      このソートだけをテストしている時にはまず問題は起きないでしょうが、実際アプリケーションに組み込むとかなりたちの悪いバグになってしまいます

      あー、すいません。
      リンク先見てもらうと分かるんですが、この sleep sort はネタ的な面白さがあるだけで実用にはならないものです 😀
      僕も、こんなんが実用になるとは思ってませんし、実際のアプリケーションに使おうとも思ってません。
      本文中に「ネタ」とか書いておけば良かったっすね。申し訳ない。

      返信
  2. ピンバック: Sleep sortの各言語での実装まとめ – Yuyak

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください