PHP实现常见排序算法

    技术2022-05-11  73

     

    每年总是要隔三差五的看数据结构,每次总是觉得自己很多东西没有学好,唉。今天贴刚使用php实现4的排序算法,另外堆排序和归并排序没有写。

    其他数据结构知识使用php的实现参考我以前写的文章:http://blog.csdn.net/heiyeshuwu/archive/2006/06/10/787426.aspx

     

    插入排序、选择排序、,冒泡排序,时间复杂度貌似都是 O(N2),所以实际意义不大,在实际测试中,我对3000个数组元素进行,这三种排序算法都需要花费80秒左右,而快速排序只需要8秒,差距确是比较大,有兴趣的可以自己测试一下。

     

    <? // 插入排序(一维数组) function  insert_sort( $arr ){     $count   =   count ( $arr );     for ( $i = 1 $i < $count $i ++ ){         $tmp   =   $arr [ $i ];         $j   =   $i   -   1 ;         while ( $arr [ $j >   $tmp ){             $arr [ $j + 1 =   $arr [ $j ];             $arr [ $j =   $tmp ;             $j -- ;        }    }     return   $arr ;} // 选择排序(一维数组) function  select_sort( $arr ){     $count   =   count ( $arr );     for ( $i = 0 $i < $count $i ++ ){         $k   =   $i ;         for ( $j = $i + 1 $j < $count $j ++ ){             if  ( $arr [ $k >   $arr [ $j ])                 $k   =   $j ;             if  ( $k   !=   $i ){                 $tmp   =   $arr [ $i ];                 $arr [ $i =   $arr [ $k ];                 $arr [ $k =   $tmp ;            }        }    }     return   $arr ;} // 冒泡排序(一维数组)  function  bubble_sort( $array ){      $count   =   count ( $array );      if  ( $count   <=   0 return   false ;          for ( $i = 0 $i < $count $i ++ ){          for ( $j = $count - 1 $j > $i $j -- ){              if  ( $array [ $j <   $array [ $j - 1 ]){                  $tmp   =   $array [ $j ];                  $array [ $j =   $array [ $j - 1 ];                  $array [ $j - 1 =   $tmp ;             }         }     }      return   $array ; }  // 快速排序(一维数组)  function  quick_sort( $array ){      if  ( count ( $array <=   1 return   $array ;      $key   =   $array [ 0 ];      $left_arr   =   array ();      $right_arr   =   array ();      for  ( $i = 1 $i < count ( $array );  $i ++ ){          if  ( $array [ $i <=   $key )              $left_arr []  =   $array [ $i ];          else               $right_arr []  =   $array [ $i ];     }      $left_arr   =  quick_sort( $left_arr );      $right_arr   =  quick_sort( $right_arr );          return   array_merge ( $left_arr ,   array ( $key ) ,   $right_arr ); }  ?>

     

     


    最新回复(0)