Have fun
PHP Code:
class QuickSort extends Object{
    private var array:Array;
    
    function 
QuickSort(arrayVal:Array){
        array = 
arrayVal;
        
sort();
    }
    private function 
pivot(beg:Number,end:Number):Number 
    
{
        
//set pivot to beginning of array
        
var p:String = array[beg];
        
//m also starts at beginning
        
var m:Number beg;
        
//n starts off end (we'll decrement it before it's used)
        
var n:Number end+1;
        do 
        {
            
m=m+1;
        } while (array[
m]<=&& m<end);//find first larger element
        
do 
        {
            
n=n-1;
        } while (array[
n] >p);//find last smaller element
        //loop until pointers cross
        
while (m<n
        {
            
//swap
            
var temp:String=array[m];
            array[
m]=array[n];
            array[
n]=temp;
            
//find next values to swap
            
do 
            {
                
m=m+1;
            } while (array[
m]<=p);
            do 
            {
                
n=n-1;
            } while (array[
n] >p);
        }
        
//swap beginning with n
        
var temp2:String=array[n];
        array[
n]=array[beg];
        array[
beg]=temp2;
        return 
n;// n is now the division between two unsorted halves
    
}

    private function 
selectionSort(beg:Number,end:Number):Void 
    
{
        for (var 
i:Number=beg;i<end;i++) 
        {
            var 
minj:String=i+"";        
            var 
minx:String=array[i];
            for (var 
j:Number=i+1;j<=end;j++) 
            {
                if (array[
j]<minx
                {
                    
minj=j+"";
                    
minx=array[j];
                }                
            }
            array[
minj]=array[i];
            array[
i]=minx;
              
        }
    }

    public function 
sort():Void 
    
{
        
quickSortAct(0,array.length-1);
    }
    public function 
getArray():Array{
        return array;
    }
    private function 
quickSortAct(beg:Number,end:Number):Void 
    
{
        if (
end==beg) return;
        if (
end-beg<9//an arbitrary limit to when we call selectionsort
            
selectionSort(beg,end);
        else 
        {
            var 
l:Number pivot(beg,end);
            
quickSortAct(beg,l-1);
            
quickSortAct(l+1,end);
        }
    }