×

Welcome to TagMyCode

Please login or create account to add a snippet.
1
0
 
0
Language: PHP
Posted by: Massimo Zappino
Added: Jan 29, 2011 10:53 PM
Views: 161
  1. <?
  2.  
  3. function qsort($a,$f) {
  4.        qsort_do(&$a,0,Count($a)-1,$f);
  5. }
  6.  
  7. function qsort_do($a,$l,$r,$f) {
  8.        if ($l < $r) {
  9.                qsort_partition(&$a,$l,$r,&$lp,&$rp,$f);
  10.                qsort_do(&$a,$l,$lp,$f);
  11.                qsort_do(&$a,$rp,$r,$f);
  12.        }
  13. }
  14.  
  15. function qsort_partition($a,$l,$r,$lp,$rp,$f) {
  16.        $i = $l+1;
  17.        $j = $l+1;
  18.        
  19.        while ($j <= $r) {
  20.                if ($f($a[$j],$a[$l])) {
  21.                        $tmp = $a[$j];
  22.                        $a[$j] = $a[$i];
  23.                        $a[$i] = $tmp;
  24.                        $i++;
  25.                }
  26.                $j++;
  27.        }
  28.        
  29.        $x = $a[$l];
  30.        $a[$l] = $a[$i-1];
  31.        $a[$i-1] = $x;
  32.        
  33.        $lp = $i - 2;
  34.        $rp = $i;
  35. }
  36.