冒泡排序 快排

冒泡排序

原始数组: $num = array(6,5,2,8,1,3,9);

外层循环总次数,也就是数组总长度减 1

内层循环每一次排序,循环依次减少 1 次

如果第二位数与第一位数相比较 小于第一位数,就走if判断,否则不走if判断

走if判断:

       就把第二位数放在一个新变量里

      再把第一位数赋给第二位数

       第一位数就放在了新变量里

       依次类推,直到排完为止;

   Array ( [0] => 5 [1] => 6 [2] => 2 [3] => 8 [4] => 1 [5] => 3 [6] => 9 )

Array ( [0] => 5 [1] => 2 [2] => 6 [3] => 8 [4] => 1 [5] => 3 [6] => 9 ) 
Array ( [0] => 5 [1] => 2 [2] => 6 [3] => 8 [4] => 1 [5] => 3 [6] => 9 ) 
Array ( [0] => 5 [1] => 2 [2] => 6 [3] => 1 [4] => 8 [5] => 3 [6] => 9 ) 
Array ( [0] => 5 [1] => 2 [2] => 6 [3] => 1 [4] => 3 [5] => 8 [6] => 9 ) 
Array ( [0] => 5 [1] => 2 [2] => 6 [3] => 1 [4] => 3 [5] => 8 [6] => 9 ) 
Array ( [0] => 2 [1] => 5 [2] => 6 [3] => 1 [4] => 3 [5] => 8 [6] => 9 ) 
Array ( [0] => 2 [1] => 5 [2] => 6 [3] => 1 [4] => 3 [5] => 8 [6] => 9 ) 
Array ( [0] => 2 [1] => 5 [2] => 1 [3] => 6 [4] => 3 [5] => 8 [6] => 9 ) 
Array ( [0] => 2 [1] => 5 [2] => 1 [3] => 3 [4] => 6 [5] => 8 [6] => 9 ) 
Array ( [0] => 2 [1] => 5 [2] => 1 [3] => 3 [4] => 6 [5] => 8 [6] => 9 ) 
Array ( [0] => 2 [1] => 5 [2] => 1 [3] => 3 [4] => 6 [5] => 8 [6] => 9 ) 
Array ( [0] => 2 [1] => 1 [2] => 5 [3] => 3 [4] => 6 [5] => 8 [6] => 9 ) 
Array ( [0] => 2 [1] => 1 [2] => 3 [3] => 5 [4] => 6 [5] => 8 [6] => 9 ) 
Array ( [0] => 2 [1] => 1 [2] => 3 [3] => 5 [4] => 6 [5] => 8 [6] => 9 ) 
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 5 [4] => 6 [5] => 8 [6] => 9 ) 
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 5 [4] => 6 [5] => 8 [6] => 9 ) 
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 5 [4] => 6 [5] => 8 [6] => 9 ) 
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 5 [4] => 6 [5] => 8 [6] => 9 ) 
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 5 [4] => 6 [5] => 8 [6] => 9 ) 
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 5 [4] => 6 [5] => 8 [6] => 9 ) 
<?php
    $aone = array(6,5,2,8,1,3,9);
     for($i = 0;$i<count($aone)-1;$i++){
     //冒泡排序
         for($j= 0;$j<count($aone)-$i-1;$j++){
         if($aone[$j+1]<$aone[$j]){
             $c = $aone[$j+1];
             $aone[$j+1]=$aone[$j];
             $aone[$j]=$c;
         }
        echo "<pre>";
 
     }
 
 }
print_r($aone);
?>

 

快速排序

先判断是不是数组 ,如果不是数组就return false

再判断数组的长度是不是小于等于1 ,如果数组的长度小于等于1,那么就直接返回这个数组

数组的元素有多个,定义两个空数组

(目前还不知道定义数组的目的到底何在,请接着往下看!)

然后使用for循环进行遍历,把第一个数为基准 ,作为比较的对象

先判断当前元素的大小,如果比 为基准的元素小,那么就放在左边的数组里,否则就放在右边的数组

递归调用这两个数组

将所有的数组合并 array_merge()

 

<?php
    function quick_sort($arr)
{
    //判断参数是否是一个数组
    if(!is_array($arr)) return false;
    //递归出口:数组长度为1,直接返回数组
    $length=count($arr);
    if($length<=1) return $arr;
    //数组元素有多个,则定义两个空数组
    $left=$right=array();
    //使用for循环进行遍历,把第一个元素当做比较的对象
    for($i=1;$i<$length;$i++)
    {
        //判断当前元素的大小
        if($arr[$i]<$arr[0]){
            $left[]=$arr[$i];
        }else{
            $right[]=$arr[$i];
        }
    }
    //递归调用
    $left=quick_sort($left);
    $right=quick_sort($right);
    //将所有的结果合并
    return array_merge($left,array($arr[0]),$right);
 
 
}
//调用
echo "<pre>";
//print_r(quick_sort($arr));
?>

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值