flash on 2013-7-10

by mutantleg
♥0 | Line 85 | Modified 2013-07-10 22:10:37 | MIT License
play

ActionScript3 source code

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

package {
    import flash.text.TextField;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        
          public  var deb:TextField;
           
        public function FlashTest() {
        
         
             deb = new TextField();
             deb.mouseEnabled = false;
             deb.width = 465;
             deb.height = 465;
             addChild(deb);
             
             
             var a:xFrame;
             var i:int;
             var num:int;
             var vec:Vector.<xFrame>;
             
             vec = new Vector.<xFrame>(0, false);
             
             for (i = 0; i < 8; i++)
             { 
               a = new xFrame();
               //a.sortCode =  Math.random() * 0xFF; //0xFFffFFff;
               //a.sortCode =  0xdffffFff - i; // + Math.random()*5;
             //  a.sortCode = Math.random() * 0xfFffFFff;
             //seems it doesnt work right with numbers above 0x0FFffFFf;
             
               a.sortCode = Math.random() * 0x0FffFFff;
               vec.push(a);
             }
             
          
          // deb.text = " " + (0x00ffFFff % 256);
          // deb.text = " " + (2296952673 % 256);
           
           
          //deb.text = " " + (0xFFffFFff % 256);
           
             
             deb.text = "start ";
            radixSort(vec, vec.length);
             
             var ret:String;
             ret = "";
             
             
             var g:uint;
             var k:uint;
             
             
             num = vec.length;
             for (i  = 0 ; i  < num; i++)
             {
                 a = vec[i];
               //  g = a.sortCode >> 0;
               //  g %= 256;
               //  k = (a.sortCode >> 0) % 256;
               //  ret += "\n " + a.sortCode +" g " + g  + "  " + uint((a.sortCode >> 0)) % 256 + " k " +k ;
                 ret += "\n " + a.sortCode; // +  "  " + uint(a.sortCode);
             }//nexti
             
             deb.text = ret;
             
            
             /*
            var ret:String;
            ret = "";
            
            var shift:uint;
            var g:uint;
            var sc:uint;
            
            var m:Number;
            m = -1;
            
            sc = m; //256; //0xffFFff00; //-242;
            
            shift = 0;
            
            ret += "sc " + sc ;            
            
            for (shift = 0; shift <= 32; shift+=8)
            {
              
              g = (sc >> shift) % 256;
              ret += "\n shift " + shift + " g " + g;  
                
            }     
                 
                 
                 deb.text = ret;
            */
            
        }//ctor
        
        
        
           public var tempVec:Vector.<xFrame> = new Vector.<xFrame>(4096, false);
        public var tempBuck:Vector.<int> = new Vector.<int>(256, false);

        public function radixSort(vec:Vector.<xFrame>, num:int):void
        {
          var a:xFrame;
          var temp:Vector.<xFrame>;
          var buck:Vector.<int>;
          var i:int;
          var k:uint;
          var shift:int;
          var g:int;

            //todo -- in the prototype it was set in the wrong way
            if (vec.length < num) { num = vec.length; }
          
            
            temp = tempVec;
            
            //todo -- resize when vec is larger than max
            if (temp.length < num) { return; }

         
            buck = tempBuck;
            shift = 0;
            

          while (shift < 32)
            {
              
                //reset bucket
                for (k = 0; k < 256; k++)
                { buck[k] = 0; }
              
                
                for (i = 0; i < num; i++)
                {
               
                  g = (vec[i].sortCode >> shift) % 256;
                  if (g < 0) { g = -g; }
                  buck[g]++;
                }
               
                for (i = 1; i < 256; i++) 
                {
                  buck[i] += buck[i - 1];
                }
               
                for (i = num - 1; i >= 0; i--)
                {
                  g = (vec[i].sortCode >> shift) % 256;
                  if (g < 0) { g = -g; }
                  temp[--buck[g] ] = vec[i];
                }
               
                for (i = 0; i < num; i++)
                {
                  vec[i] = temp[i];
                }
               
                shift +=  8; 
              
            }//wend
          
        }//radixsort  

        
        
        
       
        
    }//classend
}

internal class xFrame
{

    public var sortCode:int = 0;
    
}