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 ?>

 

转载于:https://www.cnblogs.com/crepesofwrath/p/4093245.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值