読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

Array comprehensionsでクイックソート

JavaScript

JavaScript1.7からgeneratorとそれを使ったArray comprehensionsが使えるようになっているらしい。ということでとりあえずクイックソートを作ってみた。

// クイックソート!
function sort(list) {
    if ( list.length <= 1 ) { return list; }
    return sort([i for (i in each(list) ) if (i < list[0])])
       .concat( list[0] )
       .concat( sort([i for (i in each(list) ) if (i >= list[0])]) );
}
function each( list ) {
    for (var i = 1; i < list.length; i++) {
        yield list[i];
    }
}

実行結果です。

var list = [1,9,4,8,7,5,4,9,3,0,1,2,8,3];
stdout.innerHTML += sort( list ).join(","); // 0,1,1,2,3,3,4,4,5,7,8,8,9,9

実行してみる。※FireFox2のみで確認。IE6では動作しませんでした。


rubyのContinuationっぽい動きだなー。処理の途中でUIを更新したい時とかに使えそう。IEで動かないのが痛い。

参考: