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ù)以上過(guò)程,仍從第一對(duì)數(shù)開(kāi)始比較(因?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ù)。如此下去,直至最終完成排序。
由于在排序過(guò)程中總是小數(shù)往前放,大數(shù)往后放,相當(dāng)于氣泡往上升,所以稱(chē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ù)排序,選擇排序等等。而冒泡排序一直由于其簡(jiǎn)潔的思想方法和比較高的效率而倍受青睞。
排序過(guò)程
設(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)在回顧一下也還真的就那一回事。嘿嘿!各位有沒(méi)有遇到這樣子的情況呢?
<?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 json_encode()函數(shù)返回json數(shù)據(jù)實(shí)例代碼
php返回json數(shù)據(jù)用到j(luò)son_encode()函數(shù),此函數(shù)會(huì)生成一個(gè)標(biāo)準(zhǔn)的json格式的數(shù)據(jù),實(shí)例代碼如下2014-10-10
PHP設(shè)計(jì)模式之簡(jiǎn)單工廠(chǎng)和工廠(chǎng)模式實(shí)例分析
這篇文章主要介紹了PHP設(shè)計(jì)模式之簡(jiǎn)單工廠(chǎng)和工廠(chǎng)模式,結(jié)合實(shí)例形式分析了php設(shè)計(jì)模式中工廠(chǎng)模式的實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-03-03
解析php中die(),exit(),return的區(qū)別
本篇文章是對(duì)php中die(),exit(),return的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
PHP laravel實(shí)現(xiàn)導(dǎo)出PDF功能
有時(shí)候我們會(huì)需要使用PHP導(dǎo)出pdf。這篇文章主要是記錄一下laravel實(shí)現(xiàn)導(dǎo)出PDF的兩種方式。文中的示例代碼講解詳細(xì),需要的可以參考一下2022-10-10
php+MySQL實(shí)現(xiàn)登錄時(shí)驗(yàn)證登錄名和密碼是否正確
本文實(shí)例實(shí)現(xiàn)登錄時(shí)去數(shù)據(jù)庫(kù)校驗(yàn)用戶(hù)輸入的登錄名和密碼是否正確,這篇文章主要介紹了php+MySQL實(shí)現(xiàn)登錄時(shí)校驗(yàn)登錄名和密碼是否正確,感興趣的小伙伴們可以參考一下2016-05-05
PHP實(shí)現(xiàn)的登錄頁(yè)面信息提示功能示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的登錄頁(yè)面信息提示功能,涉及php表單提交、數(shù)據(jù)庫(kù)查詢(xún)、判斷及session數(shù)據(jù)存儲(chǔ)等相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
PHP函數(shù)http_build_query使用詳解
這篇文章主要介紹了PHP函數(shù)http_build_query使用詳解,分別對(duì)傳入一維關(guān)聯(lián)數(shù)組、一維索引數(shù)組、二維數(shù)組、傳入對(duì)象等給出示例,需要的朋友可以參考下2014-08-08
PHP中使用glob函數(shù)實(shí)現(xiàn)一句話(huà)刪除某個(gè)目錄下的所有文件
這篇文章主要介紹了PHP中使用glob函數(shù)實(shí)現(xiàn)一句話(huà)刪除某個(gè)目錄下的所有文件,重點(diǎn)在glob函數(shù)的使用上,需要的朋友可以參考下2014-07-07

