background image

php 实现快速排序法函数代码

取一个值与其他值进行比较,小的放在这个值的左边,大的放在这个值的右边,然后按照
这个方式递归
代码

1: 

代码如下

:

 
<?php 

function

 quicksort(

$str

){ 

if

(

count

(

$str

)<=1) 

return

 

$str

;

//如果个数不大于一,直接返回 

$key

=

$str

[0];

//取一个值,稍后用来比较; 

$left_arr

=

array

(); 

$right_arr

=

array

(); 

for

(

$i

=1;

$i

<

count

(

$str

);

$i

++){

//比$key 大的放在右边,小的放在左边; 

if

(

$str

[

$i

]<=

$key

$left_arr

[]=

$str

[

$i

]; 

else

 

$right_arr

[]=

$str

[

$i

]; 

$left_arr

=quicksort(

$left_arr

);

//进行递归; 

$right_arr

=quicksort(

$right_arr

); 

return

 

array_merge

(

$left_arr

,

array

(

$key

),

$right_arr

);

//将左中右的值合并成一个数组; 

}

//以下是测试 

$str

=

array

(5,3,8,2,5,9,7,2,1,4,0); 

print_r(quicksort(

$str

)); 

?> 
 
代码

2: 

代码如下

:

 

/* @快速排序法*/

 

function

 quickSort(

$left

,

$right

,

$arr

){ 

$l

 = 

$left

$r

 = 

$right

$pivot

 = 

$arr

[(

$left

+

$right

)/2]; 

$temp

 = 0; 

 

while

(

$l

<

$r

){ 

while

(

$arr

[

$l

]<

$pivot

){ 

$l

++;