PHP(冒泡,快速,选择,插入)排序

来源:互联网 发布:守望先锋的性能数据 编辑:程序博客网 时间:2024/06/06 00:57
<?php

$arr=array(6,3,8,6,4,2,9,5,1);
//冒泡排序
function Bubble($arr)
{
    $length = count($arr);
    for($i=0;$i<$length-1;$i++)
        {
        for($j=0;$j<$length-1-$i;$j++)
        {
            if($arr[$j]>$arr[$j+1])
            {
                list($arr[$j],$arr[$j+1]) = [$arr[$j+1],$arr[$j]];
            }
        }
    }
    return $arr;
}

//print_r(Bubble($arr));


//快速排序
function quick($arr)
{
    $length=count($arr);
    if($length<=1)
    {
        return $arr;
    }
    $left=$right=array();
    for($i=1;$i<$length;$i++)
    {
        if($arr[$i]<$arr[0])
        {
            $left[]=$arr[$i];
        }else{
            $right[]=$arr[$i];
        }
    }
    $left = quick($left);
    $right = quick($right);
    return array_merge($left,array($arr[0]),$right);
}

//print_r(quick($arr));


//选择排序
function Select($arr)
{
    $length = count($arr);
    for($i=0;$i<$length;$i++)
    {
        $little = $i;
        for($j=$i+1;$j<$length;$j++)
        {
            if($arr[$little]>$arr[$j])
            {
                list($arr[$little],$arr[$j]) = [$arr[$j],$arr[$little]];
            }
        }
    }
    return $arr;

}


//插入排序
$array = [1,3,5,4,6,7,2,3,9,8];
$sum = 123;
function Insertsort($array,$sum)
{
    //把要插入的数据放到数组第一位
    array_unshift($array,$sum);
    $length = count($array);
    for($i=1;$i<$length;$i++)
    {
        //取的数组的第二个数
        //每次用后面一个数跟前面相比
        $val = $array[$i];
        for($j=$i-1;$j>=0;$j--)
        {
            if($val<$array[$j])
            {
                list($array[$j+1],$array[$j]) = [$array[$j],$array[$j+1]];
            }else{
                break;
            }
        }
    }
    return $array;
}
print_r(Insertsort($array,$sum));
原创粉丝点击