冒泡排序算法_PHP冒泡排序算法(一)
·點(diǎn)擊藍(lán)字關(guān)注我們!每天獲取最新的編程小知識(shí)!
源 /?php中文網(wǎng)? ????源 /?www.php.cn
在前面的文章中,我們給大家介紹了PHP算法系列之《PHP隨機(jī)取一算法》。今天我們繼續(xù)為大家講解常見(jiàn)的PHP算法系列的相關(guān)知識(shí)點(diǎn),即PHP冒泡排序算法。
(視頻版請(qǐng)點(diǎn)擊本文末尾左下角:
冒泡排序,相信對(duì)于編程人員來(lái)說(shuō)并不陌生。冒泡排序算法簡(jiǎn)單來(lái)說(shuō)就是依次比較相鄰的兩個(gè)數(shù),然后根據(jù)大小做出排序,直至最后兩位數(shù)。
那么之所以稱(chēng)為“冒泡排序”算法是因?yàn)樵酱蟮脑貢?huì)經(jīng)由交換慢慢“浮”到數(shù)列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會(huì)上浮到頂端一樣。
下面我們就結(jié)合具體的代碼示例,給大家介紹PHP冒泡排序算法的實(shí)現(xiàn)。(以下是升序排列,即從小到大排列)
代碼示例如下:
function maopao($arr){
????$len = count($arr);
????for($k=0;$k<=$len;$k++)
????{
????????for($j=$len-1;$j>$k;$j--){
????????????if($arr[$j]<$arr[$j-1]){
????????????????$temp = $arr[$j];
????????????????$arr[$j] = $arr[$j-1];
????????????????$arr[$j-1] = $temp;
????????????}
????????}
????}
????return $arr;
}
$arr = [2,6,2,8,2,34,5,9,2341,23];
var_dump(maopao($arr));
這里我們定義了一個(gè)maopao方法,首先我們通過(guò)count函數(shù)統(tǒng)計(jì)出指定數(shù)組的總長(zhǎng)度。 然后使用雙重for循環(huán)語(yǔ)句循環(huán)遍歷數(shù)組元素并逐一比較,那么外層for循環(huán)就是用來(lái)控制循環(huán)輪次;內(nèi)層for循環(huán)就是控制每輪的比較次數(shù),并且在每輪比較后選出最大的一個(gè)值放在最后。
注意:這里我們通過(guò)臨時(shí)變量$temp介質(zhì)來(lái)存貯$j的值,以此循環(huán)比較兩個(gè)相鄰的元素,并把大的值放在后面。
輸出:
array (size=10)
??0 => int 2
??1 => int 2
??2 => int 2
??3 => int 5
??4 => int 6
??5 => int 8
??6 => int 9
??7 => int 23
??8 => int 34
??9 => int 2341
總結(jié)冒泡排序的算法原理:對(duì)一組數(shù)據(jù),比較相鄰數(shù)據(jù)的大小,將值小數(shù)據(jù)在前面,值大的數(shù)據(jù)放在后面。
本篇文章就是關(guān)于PHP冒泡排序算法的介紹,在下篇文章《PHP冒泡排序算法(二)》中,我們將通過(guò)Xdebug為大家更直觀(guān)地調(diào)試運(yùn)行冒泡排序算法的實(shí)現(xiàn)過(guò)程。
-END-
聲明:本文選自「?php中文網(wǎng)?」,搜索「 phpcnnew 」即可關(guān)注!
▼
總結(jié)
以上是生活随笔為你收集整理的冒泡排序算法_PHP冒泡排序算法(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: securecrt是什么工具_网络总出故
- 下一篇: postgresql主从备份_基于PG1