PHP实现四种基本排序算法

2018-03-19  本文已影响0人  幽思片羽

冒泡排序

思路分析:

function bubbleSort(array $arr)
{
    $count = count($arr);
    for ($i=1; $i < $count; $i++) {
        for ($j=0; $j < $count-$i; $j++) {
            if($arr[$j] > $arr[$j+1]){
                // $tmp = $arr[$j];
                // $arr[$j] = $arr[$j+1];
                // $arr[$j+1] = $tmp;
                list($arr[$j], $arr[$j+1]) = [$arr[$j+1], $arr[$j]];
            }
        }
    }
    return $arr;
}

快速排序

思路分析:

function quickSort(array $arr)
{
    $count = count($arr);
    if($count <= 1){
        return $arr;
    }
    $left = $right = [];
    for ($i=1; $i < $count; $i++) {
        if($arr[$i] < $arr[0]){
            $left[] = $arr[$i];
        }else{
            $right[] = $arr[$i];
        }
    }
    $left = quickSort($left);
    $right = quickSort($right);
    return array_merge($left, [$arr[0]], $right);
}

插入排序

思路分析:

function insertSort(array $arr)
{
    $count = count($arr);
    for ($i = 1; $i < $count; $i++){
        $temp = $arr[$i];
        $j    = $i - 1;

        while ($arr[$j] > $temp){
            $arr[$j+1] = $arr[$j];
            $arr[$j]   = $temp;
            $j--;
            if ($j < 0) break;
        }
    }
    return $arr;
}

选择排序

思路分析:

function selectSort(array $arr)
{
    $count = count($arr);
    for ($i = 0; $i < $count; $i++){
        $k = $i;
        for ($j = $i + 1; $j < $count; $j++){
            if($arr[$j] < $arr[$k]){
                $k = $j;
            }
        }
        if($k != $i){
            $temp    = $arr[$i];
            $arr[$i] = $arr[$k];
            $arr[$k] = $temp;
        }
    }
    return $arr;
}
上一篇下一篇

猜你喜欢

热点阅读