php不用內(nèi)置函數(shù)對(duì)數(shù)組排序的兩個(gè)算法代碼
更新時(shí)間:2010年02月08日 08:22:11 作者:
php不用內(nèi)置函數(shù)對(duì)數(shù)組排序,可能是降序或者升序
一朋友找工作遇到的試題,備注一下。
極有可能今后我也會(huì)遇到的。
問題:php不用內(nèi)置函數(shù)對(duì)數(shù)組排序,可能是降序或者升序
第一種方法:傳說(shuō)中的冒泡法
function arraysort($data, $order = 'asc') {
//asc升序 desc降序
$temp = array ();
$count = count ( $data );
if ($count <= 0)
return false; //傳入的數(shù)據(jù)不正確
if ($order == 'asc') {
for($i = 0; $i < $count; $i ++) {
for($j = $count - 1; $j > $i; $j --) {
if ($data [$j] < $data [$j - 1]) {
//交換兩個(gè)數(shù)據(jù)的位置
$temp = $data [$j];
$data [$j] = $data [$j - 1];
$data [$j - 1] = $temp;
}
}
}
} else {
for($i = 0; $i < $count; $i ++) {
for($j = $count - 1; $j > $i; $j --) {
if ($data [$j] > $data [$j - 1]) {
$temp = $data [$j];
$data [$j] = $data [$j - 1];
$data [$j - 1] = $temp;
}
}
}
}
return $data;
}
$data = array (7, 5, 3, 8, 9, 1, 5, 3, 1, 24, 3, 87, 0, 33, 1, 12, 34, 54, 66, 32 );
var_dump ( arraysort ( $data ) ); //升序
echo ('<br>');
var_dump ( arraysort ( $data ,'desc') );//降序
第二種方法:不知道取個(gè)什么名字好,就叫插入法吧!囧
function arraysort3($data, $order = 'asc') {
//目前只做升序排列
$count = count ( $data );
for($i = 1; $i < $count; $i ++) {
$temp = $data [$i];
$j = $i - 1;
while ( $data [$j] > $temp ) {
$data [$j + 1] = $data [$j];
$data [$j] = $temp;
$j --;//為什么要遞減:從高位逐位判斷
}
}
return $data;
}
$data = array (7, 5, 3, 8, 9, 1, 5, 3, 1, 24, 3, 87, 0, 33, 1, 12, 34, 54, 66, 32 );
var_dump ( arraysort3 ( $data ) ); //升序
極有可能今后我也會(huì)遇到的。
問題:php不用內(nèi)置函數(shù)對(duì)數(shù)組排序,可能是降序或者升序
第一種方法:傳說(shuō)中的冒泡法
復(fù)制代碼 代碼如下:
function arraysort($data, $order = 'asc') {
//asc升序 desc降序
$temp = array ();
$count = count ( $data );
if ($count <= 0)
return false; //傳入的數(shù)據(jù)不正確
if ($order == 'asc') {
for($i = 0; $i < $count; $i ++) {
for($j = $count - 1; $j > $i; $j --) {
if ($data [$j] < $data [$j - 1]) {
//交換兩個(gè)數(shù)據(jù)的位置
$temp = $data [$j];
$data [$j] = $data [$j - 1];
$data [$j - 1] = $temp;
}
}
}
} else {
for($i = 0; $i < $count; $i ++) {
for($j = $count - 1; $j > $i; $j --) {
if ($data [$j] > $data [$j - 1]) {
$temp = $data [$j];
$data [$j] = $data [$j - 1];
$data [$j - 1] = $temp;
}
}
}
}
return $data;
}
$data = array (7, 5, 3, 8, 9, 1, 5, 3, 1, 24, 3, 87, 0, 33, 1, 12, 34, 54, 66, 32 );
var_dump ( arraysort ( $data ) ); //升序
echo ('<br>');
var_dump ( arraysort ( $data ,'desc') );//降序
第二種方法:不知道取個(gè)什么名字好,就叫插入法吧!囧
復(fù)制代碼 代碼如下:
function arraysort3($data, $order = 'asc') {
//目前只做升序排列
$count = count ( $data );
for($i = 1; $i < $count; $i ++) {
$temp = $data [$i];
$j = $i - 1;
while ( $data [$j] > $temp ) {
$data [$j + 1] = $data [$j];
$data [$j] = $temp;
$j --;//為什么要遞減:從高位逐位判斷
}
}
return $data;
}
$data = array (7, 5, 3, 8, 9, 1, 5, 3, 1, 24, 3, 87, 0, 33, 1, 12, 34, 54, 66, 32 );
var_dump ( arraysort3 ( $data ) ); //升序
您可能感興趣的文章:
- PHP 數(shù)組排序方法總結(jié) 推薦收藏
- php中二維數(shù)組排序問題方法詳解
- array_multisort實(shí)現(xiàn)PHP多維數(shù)組排序示例講解
- php簡(jiǎn)單實(shí)現(xiàn)多維數(shù)組排序的方法
- PHP 冒泡排序 二分查找 順序查找 二維數(shù)組排序算法函數(shù)的詳解
- php 數(shù)組排序 array_multisort與uasort的區(qū)別
- php關(guān)于array_multisort多維數(shù)組排序的使用說(shuō)明
- PHP數(shù)組排序之sort、asort與ksort用法實(shí)例
- PHP 簡(jiǎn)單數(shù)組排序?qū)崿F(xiàn)代碼
- PHP常見數(shù)組排序方法小結(jié)
相關(guān)文章
PHP登錄驗(yàn)證功能示例【用戶名、密碼、驗(yàn)證碼、數(shù)據(jù)庫(kù)、已登陸驗(yàn)證、自動(dòng)登錄和注銷登錄等】
這篇文章主要介紹了PHP登錄驗(yàn)證功能,結(jié)合實(shí)例形式分析了php登陸驗(yàn)證相關(guān)的用戶名、密碼、驗(yàn)證碼、數(shù)據(jù)庫(kù)、已登陸驗(yàn)證、自動(dòng)登錄和注銷登錄等相關(guān)操作技巧,需要的朋友可以參考下2019-02-02php支持?jǐn)帱c(diǎn)續(xù)傳、分塊下載的類
這篇文章主要介紹了php支持?jǐn)帱c(diǎn)續(xù)傳、分塊下載的類的相關(guān)資料,需要的朋友可以參考下2016-05-05一個(gè)顯示某段時(shí)間內(nèi)每個(gè)月的方法 返回由這些月份組成的數(shù)組
一個(gè)顯示某段時(shí)間內(nèi)每個(gè)月的方法 返回由這些月份組成的數(shù)組,需要的朋友可以參考下2012-05-05原生PHP實(shí)現(xiàn)導(dǎo)出csv格式Excel文件的方法示例【附源碼下載】
這篇文章主要介紹了原生PHP實(shí)現(xiàn)導(dǎo)出csv格式Excel文件的方法,結(jié)合實(shí)例形式分析了基于原生php實(shí)現(xiàn)的Excel文件操作類進(jìn)行Excel文件的導(dǎo)出操作相關(guān)實(shí)現(xiàn)技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下2019-03-03PHP工廠模式、單例模式與注冊(cè)樹模式實(shí)例詳解
這篇文章主要介紹了PHP工廠模式、單例模式與注冊(cè)樹模式,結(jié)合實(shí)例形式工廠模式、單例模式與注冊(cè)樹模式的基本概念、原理、實(shí)現(xiàn)方法及使用技巧,需要的朋友可以參考下2019-06-06