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

yipeiwu_com5年前PHP代码库

本文实例分析了php冒泡排序与快速排序算法。分享给大家供大家参考,具体如下:

$a=array('3','8','1','4','11','7');
print_r($a);
$len = count($a);
//从小到大
for($i=1;$i<$len;$i++)
{
for($j=$len-1;$j>=$i;$j--)
if($a[$j]<$a[$j-1])
{//如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了
 $x=$a[$j];
 $a[$j]=$a[$j-1];
 $a[$j-1]=$x;
}
}
print_r($a);j
//另一种方法 从小到大
$b=array('4','3','8','9','2','1');
$len=count($b);
for($k=1;$k<$len;$k++)
{
for($j=$len-1,$i=0;$i<$len-$k;$i++,$j--)
if($b[$j]<$b[$j-1]){
//如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了
 $tmp=$b[$j];
 $b[$j]=$b[$j-1];
 $b[$j-1]=$tmp;
}
print_r($b);
echo "
";
}
//下面的这个执行效率更高
function maopao($arr)
{
 $len = count($arr);
 for($i=1; $i<$len; $i++)//最多做n-1趟排序
 {
 $flag = false;  //本趟排序开始前,交换标志应为假
 for($j=$len-1;$j>=$i;$j--)
 {
  if($arr[$j]<$arr[$j-1])//交换记录
  {//如果是从大到小的话,只要在这里的判断改成if($arr[$j]>$arr[$j-1])就可以了
   $x=$arr[$j];
   $arr[$j]=$arr[$j-1];
   $arr[$j-1]=$x;
   $flag = true;//发生了交换,故将交换标志置为真
  }
 }
 if(! $flag)//本趟排序未发生交换,提前终止算法
 return $arr;  
 }
}
$shuz = array('2','4','1','8','5');
$bb = maopao($shuz);
print_r($bb);
// 快速排序
function kuaisu($arr){
  $len = count($arr);
  if($len <= 1){
    return $arr;
  }
  $key = $arr[0];
  $left_arr = array();
  $right_arr = array();
  for($i=1; $i<$len;$i++){
    if($arr[$i] <= $key){
      $left_arr[] = $arr[$i];
    }else{
      $right_arr[] = $arr[$i];
    }
  }
  $left_arr = kuaisu($left_arr);
  $right_arr = kuaisu($right_arr);
  return array_merge($left_arr, array($key), $right_arr);
}
$arr = array(23,98,54,2,9,62,34);
print_r(kuaisu($arr));

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

相关文章

老生常谈PHP 文件写入和读取(必看篇)

老生常谈PHP 文件写入和读取(必看篇)

文章提纲: 一.实现文件读取和写入的基本思路 二.使用fopen方法打开文件 三.文件读取和文件写入操作 四.使用fclose方法关闭文件 五.文件指针的移动 六.Window...

PHP也能干大事之PHP中的编码解码详解

PHP也能干大事之PHP中的编码解码详解

写在前面 PHP也能干大事是我总结的PHP语法特性及相关函数类库的经典用法,并不一定是真正能实现四两拨千斤的功效,但是掌握这些方法,可以在你的工作和学习上有一些帮助,希望大家能集思广益,...

解析isset与is_null的区别

isset和is_null啥区别,看手册上讲的话, isset和is_null的功能几乎完全”相反的一样”..是不是isset就是一个is_null的相反的别名?诶, 要说区别, 那还真...

PHP通过引用传递参数用法分析

本文实例讲述了PHP通过引用传递参数用法。分享给大家供大家参考,具体如下: 先看一个手册上的示例: <?php function add_some_extra(&$st...

使用PHP反射机制来构造"CREATE TABLE"的sql语句

反射是指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。这种动态获取的信息以及动态调用对象的方法的功能称为反射API。反射是操纵面向对...