当前位置:首页 > PHP教程 > php应用 > 列表

php冒泡排序与快速排序实例详解

发布:smiling 来源: PHP粉丝网  添加日期:2021-06-28 10:50:55 浏览: 评论:0 

这篇文章主要介绍了php冒泡排序与快速排序实现方法,结合实例形式较为详细的分析了phpphp排序算法的递归、遍历运算及流程控制的相关技巧,需要的朋友可以参考下,本文实例分析了php冒泡排序与快速排序算法,分享给大家供大家参考,具体如下:

  1. $a=array('3','8','1','4','11','7'); 
  2. print_r($a); 
  3. $len = count($a); 
  4. //从小到大 
  5. for($i=1;$i<$len;$i++) 
  6. for($j=$len-1;$j>=$i;$j--) 
  7. if($a[$j]<$a[$j-1]) 
  8. {//如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了 
  9.  $x=$a[$j]; 
  10.  $a[$j]=$a[$j-1]; 
  11.  $a[$j-1]=$x
  12. print_r($a);j 
  13. //另一种方法 从小到大 
  14. $b=array('4','3','8','9','2','1'); 
  15. $len=count($b); 
  16. for($k=1;$k<$len;$k++) 
  17. for($j=$len-1,$i=0;$i<$len-$k;$i++,$j--) 
  18. if($b[$j]<$b[$j-1]){ 
  19. //如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了 
  20.  $tmp=$b[$j]; 
  21.  $b[$j]=$b[$j-1]; 
  22.  $b[$j-1]=$tmp
  23. print_r($b); 
  24. echo " 
  25. "; 
  26. //下面的这个执行效率更高 
  27. function maopao($arr
  28.  $len = count($arr); 
  29.  for($i=1; $i<$len$i++)//最多做n-1趟排序 
  30.  { 
  31.  $flag = false;  //本趟排序开始前,交换标志应为假 
  32.  for($j=$len-1;$j>=$i;$j--) 
  33.  { 
  34.   if($arr[$j]<$arr[$j-1])//交换记录 
  35.   {//如果是从大到小的话,只要在这里的判断改成if($arr[$j]>$arr[$j-1])就可以了 
  36.    $x=$arr[$j]; 
  37.    $arr[$j]=$arr[$j-1]; 
  38.    $arr[$j-1]=$x
  39.    $flag = true;//发生了交换,故将交换标志置为真 
  40.   } 
  41.  } 
  42.  if(! $flag)//本趟排序未发生交换,提前终止算法 
  43.  return $arr;   
  44.  } 
  45. $shuz = array('2','4','1','8','5'); 
  46. $bb = maopao($shuz); 
  47. print_r($bb); 
  48. // 快速排序 
  49. function kuaisu($arr){ 
  50.   $len = count($arr); 
  51.   if($len <= 1){ 
  52.     return $arr
  53.   } 
  54.   $key = $arr[0]; 
  55.   $left_arr = array(); 
  56.   $right_arr = array(); 
  57.   for($i=1; $i<$len;$i++){ 
  58.     if($arr[$i] <= $key){ 
  59.       $left_arr[] = $arr[$i]; 
  60.     }else
  61.       $right_arr[] = $arr[$i]; 
  62.     } 
  63.   } 
  64.   $left_arr = kuaisu($left_arr); 
  65.   $right_arr = kuaisu($right_arr); 
  66.   return array_merge($left_arrarray($key), $right_arr); 
  67. $arr = array(23,98,54,2,9,62,34); 
  68. print_r(kuaisu($arr)); 

希望本文所述对大家php程序设计有所帮助。

Tags: php冒泡排序 php快速排序

分享到: