php中的一些數(shù)組排序方法分享
更新時間:2012年07月20日 14:44:47 作者:
php中的一些數(shù)組排序方法分享,需要的朋友可以參考下
A.內(nèi)部排序(直接加載到內(nèi)存進行排序):包括交換式排序(冒泡和快速法)、選擇式排序、插入式排序
B.外部排序(因數(shù)據(jù)量大,需借助外部存儲進行排序):包括合并排序、直接合并排序
【冒泡排序:從后向前,依次比較相鄰元素的排序碼,若發(fā)現(xiàn)逆序則交換,一輪結束后,再來一輪,直到所有相鄰數(shù)無逆序,即按順序排完】
function maoPao($arr,$style)//【默認傳遞的是值,不是地址。如果在$arr前加個&,則和$arr1指向同一個地址,函數(shù)外的$arr1也被排好了】
{
$temp=0;
$flag=false;
for($i=0;$i<count($arr)-1;$i++)
{
for($j=0;$j<count($arr)-1-$i;$j++)
{
if($style=='bts') $op=$arr[$j]<$arr[$j+1];
else if($style=='stb') $op=$arr[$j]>$arr[$j+1];
if($op)
{
$temp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
$flag=true;
}
}
if($flag==false)
{
break;//當一次橫向循環(huán)下來flag==false;說明縱向循環(huán)里每次相鄰元素比較大小時if條件均不滿足,即從小到大已排好,無需再橫向循環(huán)
}
}
foreach ($arr as $key => $value)
{
echo $value.',';
}
}
$arr1=array(101,101,-9,-8,0,76,1,57,43,90,23,-56);
maoPao($arr1,'stb');//small to big
【選擇排序:第二個數(shù)至第n個數(shù)分別與第一個數(shù)比較,進行交換,第三個數(shù)至第n個數(shù)分別與第二個數(shù)比較,進行交換,直到排完】
function selectSort($arr,$style)
{
$temp=0;
$flag=false;
for($i=0;$i<count($arr)-1;$i++)
{
for($j=$i+1;$j<count($arr);$j++)
{
if($style=='bts') $op=$arr[$i]<$arr[$j];
else if($style=='stb') $op=$arr[$i]>$arr[$j];
if($op)
{
$temp=$arr[$i];
$arr[$i]=$arr[$j];
$arr[$j]=$temp;
$flag=true;
}
}
if($flag==false)
{
break;
}
}
foreach ($arr as $key => $value)
{
echo $value.',';
}
}
$arr1=array(21.5,33,90,7,-4,5,55,11);
selectSort($arr1,'stb');
function selectSort($arr,$style)
{
$temp=0;
$flag=false;
for($i=0;$i<count($arr)-1;$i++)
{
for($j=$i+1;$j<count($arr);$j++)
{
if($style=='bts') $op=$arr[$i]<$arr[$j];
else if($style=='stb') $op=$arr[$i]>$arr[$j];
if($op)
{
$temp=$arr[$i];
$arr[$i]=$arr[$j];
$arr[$j]=$temp;
$flag=true;
}
}
if($flag==false)
{
break;
}
}
foreach ($arr as $key => $value)
{
echo $value.',';
}
}
$arr1=array(21.5,33,90,7,-4,5,55,11);
selectSort($arr1,'stb');
echo "<br/>";
B.外部排序(因數(shù)據(jù)量大,需借助外部存儲進行排序):包括合并排序、直接合并排序
【冒泡排序:從后向前,依次比較相鄰元素的排序碼,若發(fā)現(xiàn)逆序則交換,一輪結束后,再來一輪,直到所有相鄰數(shù)無逆序,即按順序排完】
復制代碼 代碼如下:
function maoPao($arr,$style)//【默認傳遞的是值,不是地址。如果在$arr前加個&,則和$arr1指向同一個地址,函數(shù)外的$arr1也被排好了】
{
$temp=0;
$flag=false;
for($i=0;$i<count($arr)-1;$i++)
{
for($j=0;$j<count($arr)-1-$i;$j++)
{
if($style=='bts') $op=$arr[$j]<$arr[$j+1];
else if($style=='stb') $op=$arr[$j]>$arr[$j+1];
if($op)
{
$temp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
$flag=true;
}
}
if($flag==false)
{
break;//當一次橫向循環(huán)下來flag==false;說明縱向循環(huán)里每次相鄰元素比較大小時if條件均不滿足,即從小到大已排好,無需再橫向循環(huán)
}
}
foreach ($arr as $key => $value)
{
echo $value.',';
}
}
$arr1=array(101,101,-9,-8,0,76,1,57,43,90,23,-56);
maoPao($arr1,'stb');//small to big
【選擇排序:第二個數(shù)至第n個數(shù)分別與第一個數(shù)比較,進行交換,第三個數(shù)至第n個數(shù)分別與第二個數(shù)比較,進行交換,直到排完】
復制代碼 代碼如下:
function selectSort($arr,$style)
{
$temp=0;
$flag=false;
for($i=0;$i<count($arr)-1;$i++)
{
for($j=$i+1;$j<count($arr);$j++)
{
if($style=='bts') $op=$arr[$i]<$arr[$j];
else if($style=='stb') $op=$arr[$i]>$arr[$j];
if($op)
{
$temp=$arr[$i];
$arr[$i]=$arr[$j];
$arr[$j]=$temp;
$flag=true;
}
}
if($flag==false)
{
break;
}
}
foreach ($arr as $key => $value)
{
echo $value.',';
}
}
$arr1=array(21.5,33,90,7,-4,5,55,11);
selectSort($arr1,'stb');
復制代碼 代碼如下:
function selectSort($arr,$style)
{
$temp=0;
$flag=false;
for($i=0;$i<count($arr)-1;$i++)
{
for($j=$i+1;$j<count($arr);$j++)
{
if($style=='bts') $op=$arr[$i]<$arr[$j];
else if($style=='stb') $op=$arr[$i]>$arr[$j];
if($op)
{
$temp=$arr[$i];
$arr[$i]=$arr[$j];
$arr[$j]=$temp;
$flag=true;
}
}
if($flag==false)
{
break;
}
}
foreach ($arr as $key => $value)
{
echo $value.',';
}
}
$arr1=array(21.5,33,90,7,-4,5,55,11);
selectSort($arr1,'stb');
echo "<br/>";
您可能感興趣的文章:
- PHP去除數(shù)組中重復的元素并按鍵名排序函數(shù)
- php array_map array_multisort 高效處理多維數(shù)組排序
- PHP 數(shù)組排序方法總結 推薦收藏
- PHP 多維數(shù)組排序(usort,uasort)
- PHP下對數(shù)組進行排序的函數(shù)
- array_multisort實現(xiàn)PHP多維數(shù)組排序示例講解
- PHP排序之二維數(shù)組的按照字母排序實現(xiàn)代碼
- PHP 多維數(shù)組的排序問題 根據(jù)二維數(shù)組中某個項排序
- php比較多維數(shù)組中值的大小排序實現(xiàn)代碼
- PHP 冒泡排序 二分查找 順序查找 二維數(shù)組排序算法函數(shù)的詳解
- php二維數(shù)組排序詳解
- php對二維數(shù)組按指定鍵值key排序示例代碼
- php冒泡排序、快速排序、快速查找、二維數(shù)組去重實例分享
- php數(shù)組中包含中文的排序方法
- PHP 二維數(shù)組根據(jù)某個字段排序的具體實現(xiàn)
- php數(shù)組隨機排序實現(xiàn)方法
- 基于php實現(xiàn)隨機合并數(shù)組并排序(原排序)
相關文章
WordPress開發(fā)中用于獲取近期文章的PHP函數(shù)使用解析
這篇文章主要介紹了WordPress開發(fā)中用于獲取近期文章的PHP函數(shù)使用解析,即對wp_get_recent_posts函數(shù)的使用方法介紹,需要的朋友可以參考下2016-01-01

