php data structures and algorithms of PHP describe quicksort quick sort

  • 2020-05-17 04:55:48
  • OfStack

 
<?php 
/** 
*  Quick sort  quick sort 
* 
**/ 

function sort_quick($arrData) { 
if(empty($arrData) || !is_array($arrData)) return false; 

$flag = $arrData[0]; 
$len = count($arrData) - 1; 
if($len == 0) return $arrData; //  If only 1 An array of data is returned directly  

$arrLeft = array(); 
$arrRight = array(); 
$len_l = 0; 
$len_r = 0; 
for($i = 1; $i <= $len;$i++) { 
if($arrData[$i] < $flag) { 
$arrLeft[$len_l] = $arrData[$i]; //  The less than is on the left  
$len_l++; 
} else { 
$arrRight[$len_r] = $arrData[$i]; //  Greater than or equal to  
$len_r++; 
} 
} 

//  Merge array  
$arrResult = array(); 
if($len_l) { 
$arrLeft = sort_quick($arrLeft); 
for($i = 0;$i <= $len_l - 1; $i++ ) { 
$arrResult[$i] = $arrLeft[$i]; 
} 
} 
$arrResult[$len_l] = $flag; 
$len_l++; 
if($len_r) { 
$arrRight = sort_quick($arrRight); 
for($i = 0;$i <= $len_r - 1; $i++ ) { 
$arrResult[$len_l] = $arrRight[$i]; 
$len_l++; 
} 
} 
echo "== ",$flag," ==========================================<br/>"; 
echo "data : ",print_r($arrData),"<br/>"; 
echo "filter left: ",print_r($arrLeft),"<br/>"; 
echo "filter right: ",print_r($arrRight),"<br/>"; 
echo "return : ",print_r($arrResult),"<br/>"; 

return $arrResult; 
} 
//$list = array(4,3,2,1,5,7,3,7); 
$list = array(4,51,6,73,2,5,9,33,50,3,4,6,1,4,67); 
$list = sort_quick($list); 
echo "<pre>";print_r($list); 

Related articles: