zoukankan      html  css  js  c++  java
  • PHP冒泡排序

    冒泡排序

    对数组$arr = [1,7,5,3,3,2]按从小到大进行排序

    $arr = [1,7,5,3,3,2];
    
    function order($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])
           {
               $temp = $arr[$j+1];
               $arr[$j+1] = $arr[$j];
               $arr[$j] = $temp;
           }
           else
           {
               break;
           }
       }
       return $arr;
    }
    var_dump(order($arr));
    得到结果
    array(6) {
      [0] =>
      int(1)
      [1] =>
      int(2)
      [2] =>
      int(3)
      [3] =>
      int(3)
      [4] =>
      int(5)
      [5] =>
      int(7)
    }
    

    比较,逻辑大致是这样的。

    i=0的时候进行第一次冒泡

    j=0=> 1-7比较,7比1大,不做改变 [1,7,5,3,3,2]

    j=1=> 7-5比较,5比7小,交换位置 [1,5,7,3,3,2]

    j=2=> 7-3比较,3比7小,交换位置 [1,5,3,7,3,2]

    j=3=> 7-3比较,3比7小,交换位置 [1,5,3,3,7,2]

    j=4=> 7-2比较,3比7小,交换位置 [1,5,3,3,2,7]

    这样就进行了一次冒泡,得到了最大值 7

    i=1的时候进行第二次冒泡

    j=0=> 1-5比较,5比1大,不做改变 [1,5,3,3,2,7]

    j=1=> 5-3比较,3比5小,交换位置 [1,3,5,3,2,7]

    j=2=> 5-3比较,3比5小,交换位置 [1,3,3,5,2,7]

    j=3=> 5-2比较,2比5小,交换位置 [1,3,3,2,5,7]

    这样就进行了二次冒泡,得到了最大值 5

    i=2的时候进行第三次冒泡

    j=0=> 1-3比较,3比1大,不做改变 [1,3,3,2,5,7]

    j=1=> 3-3比较,两个一样大,不做改变 [1,3,3,2,5,7]

    j=2=> 3-2比较,2比3小,交换位置 [1,3,2,3,5,7]

    这样就进行了三次冒泡,得到了最大值 3

    i=3的时候进行第四次冒泡

    j=0=> 1-3比较,3比1大,不做改变 [1,3,2,3,5,7]

    j=1=> 3-2比较,2比3小,交换位置 [1,2,3,3,5,7]

    这样就进行了四次冒泡,得到了最大值 3

    i=4的时候进行第五次冒泡

    j=0=> 1-2比较,2比1大,不做改变 [1,2,3,3,5,7]

    这样就进行了五次冒泡,得到了最大值 2

    文章参考 http://www.cnblogs.com/shen-hua/p/5422676.html

    原文地址:https://segmentfault.com/a/1190000016260418

  • 相关阅读:
    FFmpeg源码分析:avcodec_find_decoder
    FFmpeg源码分析:解码器流程
    05Linux网络编程基础 ---- 定时器
    04Linux网络编程基础 ---- 信号
    03Linux网络编程基础 ---- IO复用
    SRS流媒体服务器04 ---- st-thread框架
    react-render()
    react开发学习
    php代码运行提速的20个小技巧(转)
    Symfony2 资料篇
  • 原文地址:https://www.cnblogs.com/lalalagq/p/9971557.html
Copyright © 2011-2022 走看看