>  기사  >  백엔드 개발  >  php实现快速排序的有关问题

php实现快速排序的有关问题

WBOY
WBOY원래의
2016-06-13 12:56:16838검색

php实现快速排序的问题?

<br />
function quick(&$arr,$low,$high){<br />
<br />
    $key = $low;<br />
    <br />
    for($i=$low,$j=$high;$i!=$j;){<br />
    <br />
       for(;$j>$key;){<br />
    <br />
           if($arr[$j]<$arr[$key]){<br />
<br />
               list($arr[$j],$arr[$key])=swap($arr[$j],$arr[$key]);     <br />
               $key = $j;<br />
               break;<br />
<br />
           }else{<br />
<br />
               $j--;<br />
<br />
           }<br />
    <br />
       }<br />
    <br />
       for(;$i<$key;){<br />
    <br />
           if($arr[$i]>$arr[$key]){<br />
<br />
               list($arr[$i],$arr[$key])=swap($arr[$i],$arr[$key]);     <br />
               $key = $i;<br />
               break;<br />
<br />
           }else{<br />
<br />
               $i++;<br />
<br />
           }<br />
    <br />
       }<br />
    }<br />
 <br />
    if($high>$low){ <br />
<br />
        quick($arr,$low,$key-1); <br />
        quick($arr,$key+1,$high);<br />
<br />
    }<br />
<br />
}<br />
<br />
$arr = array(7,4,9,1,3,2,6,8,0);<br />
quick($arr,0,8);<br />
print_r($arr);<br />


不递归的话单跑一遍正常(去掉if($high>$low)那一段)。一递归就不行了,Chrome转半天,应该是无限递归下去了。请问一下问题出在哪呢?

php 算法 快递排序
------解决方案--------------------
看得我眼冒金星
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.