PHP 冒泡排序算法的實(shí)現(xiàn)代碼
基本概念
冒泡排序的基本概念是:依次比較相鄰的兩個(gè)數(shù),將小數(shù)放在前面,大數(shù)放在后面。即首先比較第1 個(gè)和第2個(gè)數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個(gè)數(shù)和第3個(gè)數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個(gè)數(shù),將小數(shù)放前,大數(shù)放后。重復(fù)以上過程,仍從第一對(duì)數(shù)開始比較(因?yàn)榭赡苡捎诘?個(gè)數(shù)和第3個(gè)數(shù)的交換,使得第1個(gè)數(shù)不再大于第2個(gè)數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到最小數(shù)前的一對(duì)相鄰數(shù),將小數(shù)放前,大數(shù)放后,第二趟結(jié)束,在倒數(shù)第二個(gè)數(shù)中得到一個(gè)新的最小數(shù)。如此下去,直至最終完成排序。
由于在排序過程中總是小數(shù)往前放,大數(shù)往后放,相當(dāng)于氣泡往上升,所以稱作冒泡排序。
用二重循環(huán)實(shí)現(xiàn),外循環(huán)變量設(shè)為i,內(nèi)循環(huán)變量設(shè)為j。外循環(huán)重復(fù)9次,內(nèi)循環(huán)依次重復(fù) 9,8,…,1次。每次進(jìn)行比較的兩個(gè)元素都是與內(nèi)循環(huán)j有關(guān)的,它們可以分別用a[j]和a[j+1]標(biāo)識(shí),i的值依次為1,2,…,9,對(duì)于每一個(gè)i, j的值依次為1,2,…10-i。
產(chǎn)生
在許多程序設(shè)計(jì)中,我們需要將一個(gè)數(shù)列進(jìn)行排序,以方便統(tǒng)計(jì),常見的排序方法有冒泡排序,二叉樹排序,選擇排序等等。而冒泡排序一直由于其簡(jiǎn)潔的思想方法和比較高的效率而倍受青睞。
排序過程
設(shè)想被排序的數(shù)組R[1..N]垂直豎立,將每個(gè)數(shù)據(jù)元素看作有重量的氣泡,根據(jù)輕氣泡不能在重氣泡之下的原則,從下往上掃描數(shù)組R,凡掃描到違反本原則的輕氣泡,就使其向上”漂浮”,如此反復(fù)進(jìn)行,直至最后任何兩個(gè)氣泡都是輕者在上,重者在下為止。
Update 2009-8-18: 更新代碼的錯(cuò)誤。
$arr = array(345,4,17,6,52,16,58,69,32,8,234); for($i=1;$i<count($arr);$i++){ for($j=count($arr)-1;$j>=$i;$j--){ if($arr[$j]<$arr[$j-1]){ $temp = $arr[$j-1]; $arr[$j-1] = $arr[$j]; $arr[$j] = $temp; } } }
請(qǐng)使用PHP實(shí)現(xiàn)冒泡排序,將數(shù)組$a = array()按照從小到大的方式進(jìn)行排序
$a=array('3','8','1','4','11','7'); print_r($a); echo '<br/>'; $len=count($a); //從小到大 for($i=1;$i<$len;$i++){ for($j=$len-1;$j>=$i;$j--){ if($a[$j]<$a[$j-1]){ $x=$a[$j]; $a[$j]=$a[$j-1]; $a[$j-1]=$x; } } }
PHP 簡(jiǎn)單實(shí)現(xiàn)冒泡排序
學(xué)習(xí)PHP的時(shí)候不敢往算法上靠近。就是怕擾亂自己的思想,現(xiàn)在回顧一下也還真的就那一回事。嘿嘿!各位有沒有遇到這樣子的情況呢?
<?php #冒泡排序法 $arr = array(12,45,89,3,24,55,223,76,22,11,89,2,4,5,28,112,20,434,23,65,65,765,6,8,23,5,33,553,45,423,64,77,84,23); $tmp; for($i=0;$i<count($arr)-1;$i++ ){ for($j=0;$j<count($arr)-1-$i;$j++){ if($arr[$j] > $arr[$j+1]){ $tmp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $tmp; } } } print_r($arr);
php冒泡排序
$b=array('4','3','8','9','2','1');
$len=count($b);//6
第一種:
for($k=0;$k<=$len;$k++) { for($j=$len-1;$j>$k;$j--){ if($b[$j]<$b[$j-1]){ $temp = $b[$j]; $b[$j] = $b[$j-1]; $b[$j-1] = $temp; } } }
第二種:
for($k=1;$k<$len;$k++) { for($j=0;$j<$len-$k;$j++){ if($b[$j]>$b[$j+1]){ $temp =$b[$j+1]; $b[$j+1] =$b[$j] ; $b[$j] = $temp; } } }
相關(guān)文章
PHP在獲取指定目錄下的目錄,在獲取的目錄下面再創(chuàng)建文件,多平臺(tái)
PHP在獲取指定目錄下的目錄,在獲取的目錄下面再創(chuàng)建文件,多平臺(tái),需要的朋友可以參考下。2011-08-08PHP 5.0創(chuàng)建圖形的實(shí)用方法完整篇
2008-01-01詳解PHP的Yii框架的運(yùn)行機(jī)制及其路由功能
這篇文章主要介紹了PHP的Yii框架的運(yùn)行機(jī)制及其路由功能,Yii是一個(gè)基于組件的重量級(jí)的PHP框架,適合用來開發(fā)大型網(wǎng)站,需要的朋友可以參考下2016-03-03PHP定時(shí)自動(dòng)生成靜態(tài)HTML的實(shí)現(xiàn)代碼
為了提高網(wǎng)站的訪問速度,我們往往采用生成靜態(tài)的方式來實(shí)現(xiàn),這樣確實(shí)把網(wǎng)站的訪問速度提高了非常多.2010-06-06PHP.ini中配置屏蔽錯(cuò)誤信息顯示和保存錯(cuò)誤日志的例子
這篇文章主要介紹了PHP.ini中配置屏蔽錯(cuò)誤信息顯示和保存錯(cuò)誤日志的例子,需要的朋友可以參考下2014-05-05PHP遞歸實(shí)現(xiàn)無限級(jí)分類的代碼示例
無限級(jí)分類是一種對(duì)商品或信息進(jìn)行分類的方式,在這種分類方式中,每個(gè)分類都可以再次細(xì)分出更多的子分類,形成無限的級(jí)別,本文給大家介紹了如何使用PHP遞歸實(shí)現(xiàn)無限級(jí)分類,文中有詳細(xì)的代碼示例,需要的朋友可以參考下2023-10-10PHP實(shí)現(xiàn)的數(shù)據(jù)對(duì)象映射模式詳解
這篇文章主要介紹了PHP實(shí)現(xiàn)的數(shù)據(jù)對(duì)象映射模式,結(jié)合實(shí)例形式分析了php數(shù)據(jù)對(duì)象映射模式的原理、實(shí)現(xiàn)步驟及相關(guān)操作技巧,需要的朋友可以參考下2019-03-03高質(zhì)量PHP代碼的50個(gè)實(shí)用技巧必備(下)
這篇文章主要為大家分享了50個(gè)高質(zhì)量PHP代碼的實(shí)用技巧,大家必備的php實(shí)用代碼,感興趣的小伙伴們可以參考一下2016-01-01