在前面的文章中,我們給大家介紹了PHP算法系列之《PHP隨機(jī)取一算法》。今天我們繼續(xù)為大家講解常見的PHP算法系列的相關(guān)知識(shí)點(diǎn),即PHP冒泡排序算法。
冒泡排序,相信對(duì)于編程人員來(lái)說并不陌生。冒泡排序算法簡(jiǎn)單來(lái)說就是依次比較相鄰的兩個(gè)數(shù),然后根據(jù)大小做出排序,直至最后兩位數(shù)。
那么之所以稱為“冒泡排序”算法是因?yàn)樵酱蟮脑貢?huì)經(jīng)由交換慢慢“浮”到數(shù)列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會(huì)上浮到頂端一樣。
下面我們就結(jié)合具體的代碼示例,給大家介紹PHP冒泡排序算法的實(shí)現(xiàn)。(以下是升序排列,即從小到大排列)
立即學(xué)習(xí)“PHP免費(fèi)學(xué)習(xí)筆記(深入)”;
代碼示例如下:
<?php 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方法,首先我們通過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è)值放在最后。
注意:這里我們通過臨時(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冒泡排序算法(二)》中,我們將通過Xdebug為大家更直觀地調(diào)試運(yùn)行冒泡排序算法的實(shí)現(xiàn)過程。
以上就是PHP冒泡排序算法(一)的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
PHP怎么學(xué)習(xí)?PHP怎么入門?PHP在哪學(xué)?PHP怎么學(xué)才快?不用擔(dān)心,這里為大家提供了PHP速學(xué)教程(入門到精通),有需要的小伙伴保存下載就能學(xué)習(xí)啦!
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://m.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)