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

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

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

分享到: