排序

103 阅读1分钟
$arr = array(1, 3, 6, 4, 9, 45, 23, 13, 17, 15, 37);
$count = count($arr);

// 选择排序
function selectSort($arr)
{
    $count = count($arr);

    for ($i = 0;$i < $count;$i++) {
        for ($j = $i+1;$j<$count;$j++) {
            if ($arr[$i] > $arr[$j]) {
                $temp = $arr[$i];
                $arr[$i] = $arr[$j];
                $arr[$j] = $temp;
            }
        }
    }
    return $arr;
}
//$res = selectSort($arr);


//冒泡排序
function bubble($arr)
{
    $count = count($arr);
    for ($i=0;$i<$count-1;$i++){
        for ($j=0;$j<$count-1-$i;$j++){
            if($arr[$j]>$arr[$j+1]){
                $tmp = $arr[$j];
                $arr[$j] = $arr[$j+1];
                $arr[$j+1] = $tmp;
            }
        }
    }
    return $arr;
}
//$res = bubble($arr);

$arr = array(1, 3, 6, 2, 9, 45, 23, 13, 17, 15, 37);
// 插入排序
function insert($arr)
{
    $count = count($arr);
    for ($i=1;$i<$count;$i++) {
        $insertValue = $arr[$i];
        $insertIndex = $i - 1;
        while (($insertIndex >= 0) && ($insertValue < $arr[$insertIndex]) ) {
            $arr[$insertIndex + 1] = $arr[$insertIndex];
            $insertIndex--;
        }
        if ($insertIndex + 1 != $i) {
            $arr[$insertIndex + 1] = $insertValue;
        }
    }
    return $arr;
}
$res = insert($arr);

// 快速排序
function quickSort($arr)
{
    if (count($arr) <= 1) {
        return $arr;
    }
    $left = [];
    $right = [];
    $base = $arr[0];
    for ($i = 1;$i < count($arr);$i++) {
        if ($arr[$i] > $base) {
            $right[] = $arr[$i];
        }
        else {
            $left[] = $arr[$i];
        }
    }

    $left = quickSort($left);
    $right = quickSort($right);
    return array_merge($left, [$base], $right);
}
//$res = quickSort($arr);

echo json_encode($res);