sort()の速度

by keno42 forked from for, *, /, >> (diff: 41)
♥0 | Line 48 | Modified 2009-09-17 16:42:46 | MIT License
play

ActionScript3 source code

/**
 * Copyright keno42 ( http://wonderfl.net/user/keno42 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/TVpr
 */

// forked from keno42's for, *, /, >>
package {
    import flash.display.Sprite;
    import flash.text.*;
    import flash.utils.*;
    public class FlashTest extends Sprite {
        private static const COUNT:int = 1;
        private var tf:TextField = new TextField();
        public function FlashTest() {
            // write as3 code here..
            addChild(tf);
            tf.autoSize = "left";
            testSort(100);
            testSort(1000);
            testSort(10000);
            testSort(100000);
            testSort2(100);
            testSort2(1000);
            testSort2(10000);
            testSort2(100000);
        }
        private function testSort(n:Number):void
        {
            var i:int, j:Number, arr:Array;
            arr = [];
            http://keno.serio.jp/ :) 元ネタ: http://twitter.com/beinteractive/status/4049711241
            for( i = 0; i < n; i++ ){
                arr.push(i);
            }
            var time:uint = getTimer();
            for( i=0; i < COUNT; i++ ){
                arr.sort();
            }
            tf.appendText("ソート済みの配列にsort()(配列長"+n+"): " + String(getTimer()-time) + "ms, NlogN比:" + (getTimer()-time)/(n*Math.log(n)) + "\n");
        }
        private function testSort2(n:Number):void
        {
            var i:int, j:Number, arr:Array;
            arr = [];
            for( i = 0; i < n; i++ ){
                arr.push(n-i);
            }
            var time:uint = getTimer();
            for( i=0; i < COUNT; i++ ){
                arr.sort();
            }
            tf.appendText("逆順ソート済みの配列にsort()(配列長"+n+"): " + String(getTimer()-time) + "ms, NlogN比:" + (getTimer()-time)/(n*Math.log(n)) + "\n"); 
        }

    }
}