>  기사  >  백엔드 개발  >  php冒泡排序

php冒泡排序

WBOY
WBOY원래의
2016-06-23 13:44:30888검색

$a=array('3','8','1','4','11','7');
print_r($a);
$len = count($a);
//从小到大
for($i=1;$i {
for($j=$len-1;$j>=$i;$j--)
if($a[$j] {//如果是从大到小的话,只要在这里的判断改成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 {
for($j=$len-1,$i=0;$i if($b[$j]

//如果是从大到小的话,只要在这里的判断改成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  {
  $flag = false;    //本趟排序开始前,交换标志应为假
  for($j=$len-1;$j>=$i;$j--)
  {
   if($arr[$j]    {//如果是从大到小的话,只要在这里的判断改成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         return $arr;
    }
    $key = $arr[0];
    $left_arr = array();
    $right_arr = array();
    for($i=1; $i         if($arr[$i]             $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));

?>

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.