php冒泡排序與快速排序?qū)嵗斀?/h1>
更新時間:2015年12月07日 09:55:23 作者:流星飛雨
這篇文章主要介紹了php冒泡排序與快速排序?qū)崿F(xiàn)方法,結合實例形式較為詳細的分析了phpphp排序算法的遞歸、遍歷運算及流程控制的相關技巧,需要的朋友可以參考下
本文實例分析了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 "
";
}
//下面的這個執(zhí)行效率更高
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;//發(fā)生了交換,故將交換標志置為真
}
}
if(! $flag)//本趟排序未發(fā)生交換,提前終止算法
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實現(xiàn)模擬登陸方正教務系統(tǒng)抓取課表
這篇文章主要介紹了php實現(xiàn)模擬登陸方正教務系統(tǒng)抓取課表的相關資料,需要的朋友可以參考下 2015-05-05
-
php中call_user_func函數(shù)使用注意事項
這篇文章主要介紹了php中call_user_func函數(shù)使用注意事項,較為詳細的講述了call_user_func函數(shù)的用法實例與注意事項,具有一定的參考借鑒價值,需要的朋友可以參考下 2014-11-11
-
PHP PDO函數(shù)庫(PDO Functions)
PDO是一個“數(shù)據(jù)庫訪問抽象層”,作用是統(tǒng)一各種數(shù)據(jù)庫的訪問接口,與mysql和mysqli的函數(shù)庫相比,PDO讓跨數(shù)據(jù)庫的使用更具有親和力. 2009-07-07
最新評論
本文實例分析了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 "
";
}
//下面的這個執(zhí)行效率更高
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;//發(fā)生了交換,故將交換標志置為真
}
}
if(! $flag)//本趟排序未發(fā)生交換,提前終止算法
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實現(xiàn)模擬登陸方正教務系統(tǒng)抓取課表
這篇文章主要介紹了php實現(xiàn)模擬登陸方正教務系統(tǒng)抓取課表的相關資料,需要的朋友可以參考下2015-05-05
php中call_user_func函數(shù)使用注意事項
這篇文章主要介紹了php中call_user_func函數(shù)使用注意事項,較為詳細的講述了call_user_func函數(shù)的用法實例與注意事項,具有一定的參考借鑒價值,需要的朋友可以參考下2014-11-11
PHP PDO函數(shù)庫(PDO Functions)
PDO是一個“數(shù)據(jù)庫訪問抽象層”,作用是統(tǒng)一各種數(shù)據(jù)庫的訪問接口,與mysql和mysqli的函數(shù)庫相比,PDO讓跨數(shù)據(jù)庫的使用更具有親和力.2009-07-07

