<?PHP /** * 快速排序 --主要运用递归, 先把一个数找准位置,然后再递归把左右两边的数都找准位置 */ function QSort($a= []){ $nCount = count($a); if(($nCount) < 1){ return $a; } // 一般默认找最左边的为起始点。 $nTarget = $a[0]; $aLeft = $aRight = []; //从起始点后面选第一个开始 for($i=1; $i<$nCount; $i++){ if($a[$i] >= $nTarget){ // 从大到下 $aLeft[] = $a[$i]; }else{ $aRight[] = $a[$i]; } } // 排完一次后,递归调用此方法,让左边和右边排序。 $aLeft = QSort($aLeft); $aRight= QSort($aRight); return array_merge($aLeft,[$nTarget], $aRight); } $a = [120,2,500,3,34,1,700]; var_dump(QSort($a));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。