PHP实现“冒泡排序”算法

冒泡排序:依次比较相邻的两个数,将小数放在前面,大数放在后面。在第一趟中,先将1和2个数比较,再将第2和3个数比较,第一趟结束后,最大的数被放到了最后。接下来进行第二趟比较,使得次大的数放到倒数第二位, 经过N-1躺比较(N为数组元素个数),即可排序成功。
由于在排序的过程中,总是小数往前升,大数往后放,相当于气泡上升,所以称为冒泡排序。

<?php
  /**
  * 冒泡排序:(PHP版)
  *重复的交换两个相邻的反序元素,将最大的元素沉入最底,小元素不断往上升(冒)
  */
  //测试数组
  $arr = array( 5, 7, 4, 6, 9, 2, 8 );

  function bubble_sort( $array ){
    //PHP for循环有性能问题,count会重复调用,所以单独拿出来
    $length = count($array);
    for( $i=0; $i < $length; $i++){
      for( $j=0; $j < ($length-$i-1); $j++){
                if ( $array[$j] > $array[$j+1] ){
          $tmp = $array[$j];
          $array[$j] = $array[$j+1];
          $array[$j+1] = $tmp;
        }
      }
    }
    return $array;
  }

  //测试输出
  print_r( bubble_sort($arr) );

?>

 

2 thoughts on “PHP实现“冒泡排序”算法”

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>