zoukankan      html  css  js  c++  java
  • 浅谈算法——冒泡排序

    最近发现在网络上冒泡排序的程序不少,但是介绍基本原理的文章很少能找到,所以整理了一下,供大家参考。

    二、冒泡排序 

      <?php
      function bubble_3($_array)
      {
          $flag = true;
          $j=0;
          while($flag)
          {   
              $flag = false;
              for($i=0;$i<count($_array)-$j-2;$i++)
              {   
                  echo $i; 
                  if($_array[$i] < $_array[$i+1])
                  {   
                      $_tmp = $_array[$i];
                      $_array[$i] = $_array[$i+1];
                      $_array[$i+1] = $_tmp;
                      $flag = true;
                  }   
              }   
              $j++;
          }                                                                                                                             
          return $_array;
      }
      
      print_r(bubble_3(Array(2,1,4,6,5,3,8,6,4,0)))
      ?>

    性能分析

      它是冒泡排序的改良,但它同样是一个对数据有序性非常敏感的排序算法,只适合于数据基本有序的排序,时间复杂度与冒泡排序相同。  

      还有一种继续改良的算法(一次下沉再一次上浮),最优情况和最坏情况同样与冒泡排序差不多,但是一般情况下它要好过冒泡排序,它一次下沉,再一次上浮,这样避免了因一个数的逆序,而造成巨大的比较。如(2,3,4,…,n-1,n,1),用冒泡排序需要n(n-1)/2次比较,而此排序只要3轮,共比较(n-1)+(n-2)+(n-3)次,第一轮1将上移一位,第二轮1将移到首位,第三轮将发现无数据交换,序列有序而结束。但它同样是一个对数据有序性非常敏感的排序算法,只适合于数据基本有序的排序,由于时间有限代码就不写了。

  • 相关阅读:
    Javascript Fromdata 与jQuery 实现Ajax文件上传以及文件的删除
    Javascript Fromdata 与jQuery 实现Ajax文件上传
    web.xml配置
    servlet反射、生命周期、接口
    Tomcat
    java--反射原理及操作
    CSS基础--属性选择器、伪类选择器
    webStom常用快捷键备忘
    HTML5--sessionStorage、localStorage、manifest
    ES6
  • 原文地址:https://www.cnblogs.com/liqiu/p/2913525.html
Copyright © 2011-2022 走看看