Quick Sort In-place Implementation

在线运行PHP http://www.compileonline.com/execute_php_online.php

 1 <?php

 2 function swap( &$a, &$b )

 3 {

 4     $c = $a;

 5     $a = $b;

 6     $b = $c;

 7 }

 8 

 9 /**

10 * quick sort

11 * ascend

12 * in-place

13 */

14 function quick_sort( &$a )

15 {

16     $s = count( $a ); // size of a

17     if ( $s < 2 ) return;

18     $i = 0; // index of pivot, for tracking pivot

19     $pivot = $a[$i];

20     $l = 0; // swap listener, if listens no swap, sort fini

21 

22     // swap those smaller than pivot to the left

23     for ( $m = 0; $m < $s; $m++ )

24     {

25         if ( $a[$m] < $a[$i] )

26         {

27             swap( $a[$m], $a[$i] );

28             $i = $m;

29             $l++;

30         }

31     }

32 

33     // swap those larger than pivot to the right

34     for ( $n = 0; $n < $i; $n++)

35     {

36         if ( $a[$n] > $a[$i] )

37         {

38             swap( $a[$n], $a[$i] );

39             $i = $n;

40             $l++;

41         }

42     }

43 

44     if ( $l == 0 ) return;

45     else $l = 0;

46     quick_sort( $a );

47 }

48 

49 $arr = range( 9, 0 );

50 quick_sort( $arr );

51 echo implode( ', ', $arr );

52 ?>

 

你可能感兴趣的:(sort)