• php 冒泡排序 快速排序


    $a=array('3','8','1','4','11','7');
    print_r($a);
    $len = count($a);
    //从小到大
    for($i=1;$i<$len;$i++)
    {
    for($j=$len-1;$j>=$i;$j--)
    if($a[$j]<$a[$j-1])
    {//如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了
     

    $x=$a[$j];
     $a[$j]=$a[$j-1];
     $a[$j-1]=$x;
    }
    }
    print_r($a);j

    //另一种方法 从小到大

    $b=array('4','3','8','9','2','1');
    $len=count($b);
    for($k=1;$k<$len;$k++)
    {
    for($j=$len-1,$i=0;$i<$len-$k;$i++,$j--)
    if($b[$j]<$b[$j-1]){

    //如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了
     $tmp=$b[$j];
     $b[$j]=$b[$j-1];
     $b[$j-1]=$tmp;
    }
    print_r($b);
    echo "
    ";
    }

    //下面的这个执行效率更高

    function maopao($arr)
    {
     $len = count($arr);
     for($i=1; $i<$len; $i++)//最多做n-1趟排序
     {
      $flag = false;    //本趟排序开始前,交换标志应为假
      for($j=$len-1;$j>=$i;$j--)
      {
       if($arr[$j]<$arr[$j-1])//交换记录
       {//如果是从大到小的话,只要在这里的判断改成if($arr[$j]>$arr[$j-1])就可以了
         $x=$arr[$j];
         $arr[$j]=$arr[$j-1];
         $arr[$j-1]=$x;
         $flag = true;//发生了交换,故将交换标志置为真
       }
      }
      if(! $flag)//本趟排序未发生交换,提前终止算法
      return $arr;   
     }
    }
    $shuz = array('2','4','1','8','5');
    $bb = maopao($shuz);
    print_r($bb);

    // 快速排序
    function kuaisu($arr){
     

       $len = count($arr);
        if($len <= 1){
            return $arr;
        }
        $key = $arr[0];
        $left_arr = array();
        $right_arr = array();
        for($i=1; $i<$len;$i++){
            if($arr[$i] <= $key){
                $left_arr[] = $arr[$i];
            }else{
                $right_arr[] = $arr[$i];
            }
        }
        $left_arr = kuaisu($left_arr);
        $right_arr = kuaisu($right_arr);
        return array_merge($left_arr, array($key), $right_arr);
    }
    $arr = array(23,98,54,2,9,62,34);
    print_r(kuaisu($arr));

  • 相关阅读:
    zookeeper安装
    Xmemcached的FAQ和性能调整建议
    memcache命令
    xmemcached的使用
    从硬币游戏学习敏捷开发
    memcached安装
    系统负载能力浅析
    kubernetes1.18安装metrics-server服务
    启动docker run 报错:iptables No chain/target/match by that name
    docker容器内apt更换国内阿里源
  • 原文地址:https://www.cnblogs.com/mzli/p/5723918.html
Copyright © 2020-2023  润新知