PHP常见算法排序 | 冒泡排序、选择排序、插入排序、快速排序

一、冒泡排序

<?php
/**
* 冒泡排序
* @param $arr
* @return mixed
*/
function bubbleSort($arr)
{
    $len = count($arr);
    for($i=1; $i<$len; $i++)
    {
        for($k=0; $k<$len-$i; $k++)
        {
            if($arr[$k] > $arr[$k+1])
            {
                $tmp=$arr[$k+1];
                $arr[$k+1]=$arr[$k];
                $arr[$k]=$tmp;
            }
        }
    }
    return $arr;
}

二、选择排序

<?php
/**
 * 选择排序
 * @param $arr
 * @return mixed
 */
function selectSort($arr)
{
    $len=count($arr);
    for($i=0; $i<$len-1; $i++)
    {
        $p = $i;
        for($j=$i+1; $j<$len; $j++)
        {
            if($arr[$p] > $arr[$j])
            {
                $p = $j;
            }
        }
        if($p != $i)
        {
            $tmp = $arr[$p];
            $arr[$p] = $arr[$i];
            $arr[$i] = $tmp;
        }
    }
    return $arr;
}

三、插入排序

<?php
/**
 * 插入排序
 * @param $arr
 * @return mixed
 */
function insertSort($arr)
{
    $len=count($arr);
    for($i=1; $i<$len; $i++)
    {
        $tmp = $arr[$i];
        for($j=$i-1;$j>=0;$j--)
        {
            if($tmp < $arr[$j])
            {
                $arr[$j+1] = $arr[$j];
                $arr[$j] = $tmp;
            } else {
                break;
            }
        }
    }      
    return $arr;
}

四、快速排序

<?php
/**
 * 快速排序
 * @param $arr
 * @return array
 */
function quickSort($arr) {
    $len = count($arr);

    if($len <= 1)
    {
        return $arr;
    }

    $base_num = $arr[0];
    $left_array = [];
    $right_array = [];
    for($i=1; $i<$len; $i++)
    {
        if($base_num > $arr[$i])
        {
            $left_array[] = $arr[$i];
        } else {
            $right_array[] = $arr[$i];
        }
    }
    $left_array = self::quickSort($left_array);
    $right_array = self::quickSort($right_array);
    return array_merge($left_array, array($base_num), $right_array);
}

猜你喜欢

转载自blog.csdn.net/weixin_41635750/article/details/107796914
今日推荐