flash on 2012-3-7

by codeonwort
♥0 | Line 49 | Modified 2012-03-15 13:06:09 | MIT License
play

ActionScript3 source code

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

package {
    
    import flash.display.Sprite;
    import flash.utils.getTimer
    import com.actionscriptbible.Example
    
    public class FlashTest extends Example {
        
        public function FlashTest() {
            // write as3 code here..
            var t:Number
            
            var N:int = 1000000
            var A:Array = []
            
            for(var i:int = 0 ; i < N ; i++){
                A[i] = i
            }
            directShuffle(A, N)
            
            t = getTimer()
            countingSort(A, N)
            trace('sorting', N, 'numbers:', getTimer() - t, 'ms')
        }
        
        private function countingSort(A:Array, K:int):void {
            var N:int = A.length
            var B:Array = []
            var C:Array = []
            var i:int
            for(i = 0 ; i < K ; i++) C[i] = 0
            for(i = 0 ; i < N ; i++) {
                B[i] = 0
                C[A[i]] ++
            }
            for(i = 1 ; i < K ; i++) C[i] = C[i] + C[i - 1]
            for(i = N - 1 ; i >= 0 ; i--){
                B[C[A[i]] - 1] = A[i]
                C[A[i]] --
            }
            for(i = 0 ; i < N ; i++) A[i] = B[i]
        }
        
    }
    
}

function directShuffle(array:Array, count:uint):void {
    var temp:*, x:int, y:int
    for(var i:int=0 ; i<count ; i++){
        x = integer(array.length)
        y = integer(array.length)
        temp = array[x]
        array[x] = array[y]
        array[y] = temp
    }
}

function integer(num:int):int {
    return int(Math.random() * num)
}