Sort
quickSort
class Solution {
function quickSort(&$arrInput, $l, $r) {
$i = $l;
$j = $r;
$tmp = $arrInput[$l];
if($l > $r){
return;
}
while ($i < $j) {
while ($i < $j && $arrInput[$j] >= $tmp) {
$j--;
}
while ($i < $j && $arrInput[$i] <= $tmp) {
$i++;
}
if ($i < $j) {
$tt = $arrInput[$i];
$arrInput[$i] = $arrInput[$j];
$arrInput[$j] = $tt;
}
}
$arrInput[$l] = $arrInput[$i];
$arrInput[$i] = $tmp;
$this->quickSort($arrInput, $l, $i - 1);
$this->quickSort($arrInput, $i + 1, $r);
}
//这个方法相当有意思,简单明了
function quickSort2($arr){
// 获取数组长度
$length = count($arr);
// 判断长度是否需要继续二分比较
if($length <= 1){
return $arr;
}
// 定义基准元素
$base = $arr[0];
// 定义两个空数组,用于存放和基准元素的比较后的结果
$left = [];
$right = [];
// 遍历数组
for ($i=1; $i < $length; $i++) {
// 和基准元素作比较
if ($arr[$i] > $base) {
$right[] = $arr[$i];
}else {
$left[] = $arr[$i];
}
}
// 然后递归分别处理left和right
$left = $this->quickSort2($left);
$right = $this->quickSort2($right);
// 合并
return array_merge($left,[$base],$right);
}
}
BubbleSort
function bubbleSort(&$arr){
for($i = 0;$i<count($arr);$i++){
for($j = $i;$j<count($arr);$j++){
if($arr[$i] < $arr[$j]){
$tt = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $tt;
}
}
}
}
网友评论