導航:首頁 > 編程語言 > php數組中的數值排序

php數組中的數值排序

發布時間:2025-01-22 13:59:59

❶ 用php寫出代碼:3,6,7,1,8,2,9,4,5,0按照從小到大的順序輸出數組的值。

這個問題,可以採用經典的冒泡排序。冒泡排序的過程如下:

1.比較相鄰的元素。如果第一個比第二個大,就交換順序。

2.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。最後的元素會是最大的數。

3.針對所有的元素重復以上的步驟,除了最後一個。

4.持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。

這個過程在轉化成代碼方式的思路為:

  1. 每次從最開始的一對相鄰元素比較,到結尾的一對元素比較完畢,可以看做一個完整的步驟,代碼表示如下:

for ($j = 0;$j < count($arr)-1;$j++)// 每一次循環表示一次比較和交換的過程。

{

if ($arr[$j]>$arr[$j+1])

{

$tmp = $arr[$j];

$arr[$j] = $arr[$j+1];

$arr[$j+1] = $tmp;

}

}

2.每次重新開始上一步驟都要比上一步少比較最後一個元素(因為上一步最後一個元素已經最大),這時需要增加一個外層循環來控制每次比較元素的個數。代碼如下:

for($i = 0;$i < count($arr);$i++)// 每一次外層循環表示從頭到尾執行了一次兩兩互相比較和交換。

{

for ($j = 0;$j < count($arr)-$i-1;$j ++)// 每一次內層循環表示一次比較和交換的過程。

{

if ($arr[$j]>$arr[$j+1])

{

$tmp = $arr[$j];

$arr[$j] = $arr[$j+1];

$arr[$j+1] = $tmp;

}

}

}

完成過程代碼如下:

❷ PHP實現常見的排序演算法

註:為方便描述,下面的排序全為正序(從小到大排序)

假設有一個數組[a,b,c,d]
冒泡排序依次比較相鄰的兩個元素,如果前面的元素大於後面的元素,則兩元素交換位置;否則,位置不變。具體步驟:
1,比較a,b這兩個元素,如果a>b,則交換位置,數組變為:[b,a,c,d]
2,比較a,c這兩個元素,如果a<c,則位置不變,數組變為:[b,a,c,d]
3,比較c,d這兩個元素,如果c>d,則交換位置,數組變為:[b,a,d,c]
完成第一輪比較後,可以發現最大的數c已經排(冒)在最後面了,接著再進行第二輪比較,但第二輪比較不必比較最後一個元素了,因為最後一個元素已經是最大的了。
第二輪比較結束後,第二大的數也會冒到倒數第二的位置。
依次類推,再進行第三輪,,,
就這樣最大的數一直往後排(冒),最後完成排序。所以我們稱這種排序演算法為冒泡排序。

選擇排序是一種直觀的演算法,每一輪會選出列中最小的值,把最小值排到前面。具體步驟如下:

插入排序步驟大致如下:

快速排序是由東尼·霍爾所發展的一種排序演算法。在平均狀況下,排序 n 個項目要Ο(n log n)次比較。在最壞狀況下則需要Ο(n2)次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他Ο(n log n) 演算法更快,因為它的內部循環(inner loop)可以在大部分的架構上很有效率地被實現出來,且在大部分真實世界的數據,可以決定設計的選擇,減少所需時間的二次方項之可能性。

步驟:
從數列中挑出一個元素,稱為 「基準」(pivot),
重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。在這個分區退出之後,該基準就處於數列的中間位置。這個稱為分區(partition)操作。
遞歸地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列排序。

❸ php怎麼把數組里的數字排序

可以使用自定義函數排序uasort(),搭配匿野賣名函數挺方便的
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' =>銀罩 -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4);
uasort($array,function($a,$b){
if ($a == $b) {
return 0;
}
return ($a <鋒脊鬧 $b) ? -1 : 1;
});
print_r($array);

❹ 鐢≒HP緙栧啓紼嬪簭 鏈変竴涓鏁扮粍$arr=array(4,3,8,9,2),灝嗗叾鎸変粠灝忓埌澶х殑欏哄簭閲嶆柊鎺掑簭

<?php
$array=array(4,3,8,9,2);

sort($array);
echo "鏍囧噯鎺掑簭\n";
for($i=0;$i<count($array);$i++){
echo $array[$i];
}

natsort($array);
echo "\n鑷鐒舵帓搴\n";
for($i=0;$i<count($array);$i++){
echo $array[$i];
}

?>
緇撴灉濡備笅錛
鏍囧噯鎺掑簭 23489 鑷鐒舵帓搴 23489

❺ php數組內容添加 排序

我拿最簡單的數組寫了個給你參考..主要也是思路問題
$green = array(
0=>array("name"=>"c","score"=>90),
1=>array("name"=>"a","score"=>80),
2=>array("name"=>"d","score"=>80),
3=>array("name"=>"b","score"=>70),
4=>array("name"=>"e","score"=>60),
);
//排名 1 2 2 4 5
//姓名 C A D B E
//成績 90 80 80 70 60
foreach( $green as $k=>$v){
if ($k == 0){
$green[$k]['site']=1;
}else{
$lk = $k - 1;
if ($green[$k]['score'] != $green[$lk]['score']){
$nk=$k +1;
$green[$k]['site']= $nk;
}else{
$green[$k]['site']=$k;
}
}
}
下面是結果
array(5) {
[0]=>
array(3) {
["name"]=> string(1) "c"
["score"]=> int(90)
["site"]=> int(1)
}
[1]=>
array(3) {
["name"]=> string(1) "a"
["score"]=> int(80)
["site"]=> int(2)
}
[2]=>
array(3) {
["name"]=> string(1) "d"
["score"]=> int(80)
["site"]=> int(2)
}
[3]=>
array(3) {
["name"]=>string(1) "b"
["score"]=>int(70)
["site"]=>int(4)
}
[4]=>
array(3) {
["name"]=>string(1) "e"
["score"]=> int(60)
["site"]=>int(5)
}
}

閱讀全文

與php數組中的數值排序相關的資料

熱點內容
雲伺服器不同地域 瀏覽:944
python鬧鍾怎麼打 瀏覽:686
虛擬主機伺服器有什麼區別 瀏覽:831
演算法與程序的奧秘章節檢測 瀏覽:377
找pdf 瀏覽:527
與伺服器連接斷開如何處理 瀏覽:831
伺服器維修預計十分鍾什麼意思 瀏覽:170
黑馬程序員主打教學是什麼 瀏覽:39
python九乘法表怎麼編寫 瀏覽:972
思維方式pdf 瀏覽:656
tcc社區app怎麼注冊 瀏覽:937
央視網下載加密 瀏覽:452
命令行訪問伺服器 瀏覽:36
梁加密區箍筋是不是必須封閉箍筋 瀏覽:760
在百度地圖如何定位伺服器地址 瀏覽:570
單片機計數器中斷 瀏覽:296
哈啰安裝文件夾名稱 瀏覽:294
解壓視頻聲控用杯子玩泡沫 瀏覽:740
19年的普通安卓機怎麼樣了 瀏覽:604
如何在app上刷導游題目 瀏覽:861