PHP開發(fā)之PHP實(shí)現(xiàn)冒泡排序方法實(shí)例分享
2018-02-28 13:06:49
1401瀏覽
在現(xiàn)如今,隨著PHP程序開發(fā)中我們會(huì)遇到很多排序,而冒泡排序也是常見之一,想要做好PHP開發(fā),那么我們肯定要很輕松的使用PHP來(lái)實(shí)現(xiàn)冒泡排序,本篇文章來(lái)給大家講講PHP冒泡排序!我們一起來(lái)看看PHP實(shí)現(xiàn)冒泡排序的多種方法吧!
冒泡排序是非常容易理解和實(shí)現(xiàn),以從小到大排序舉例:
設(shè)數(shù)組長(zhǎng)度為N。
1.比較相鄰的前后二個(gè)數(shù)據(jù),如果前面數(shù)據(jù)大于后面的數(shù)據(jù),就將二個(gè)數(shù)據(jù)交換。
2.這樣對(duì)數(shù)組的第0個(gè)數(shù)據(jù)到N-1個(gè)數(shù)據(jù)進(jìn)行一次遍歷后,最大的一個(gè)數(shù)據(jù)就“沉”到數(shù)組第N-1個(gè)位置。
3.N=N-1,如果N不為0就重復(fù)前面二步,否則排序完成。
方案一:
<?php
functionbubble1_sort($array)
{
$count=count($array);
if($count<=1){
return$array;
}
for($i=0;$i<$count;$i++){
for($j=0;$j<$count;$j++){
if($array[$i]<$array[$j]){
$temp=$array[$i];
$array[$i]=$array[$j];
$array[$j]=$temp;
}
}
}
return$array;
}
方案二:
<?php
functionbubble2_sort($array)
{
$count=count($array);
if($count<=1){
return$array;
}
for($i=0;$i<$count;$i++){
for($j=1;$j<$count-$i;$j++){
if($array[$j-1]>$array[$j]){
$temp=$array[$j-1];
$array[$j-1]=$array[$j];
$array[$j]=$temp;
}
}
}
return$array;
}
方案三:
設(shè)置一個(gè)標(biāo)志,如果這一趟發(fā)生了交換,則為true,否則為false。明顯如果有一趟沒有發(fā)生交換,說明排序已經(jīng)完成。
<?php
functionbubble3_sort($array)
{
$count=count($array);
if($count<=1){
return$array;
}
$flag=true;
$j=$count;
while($flag){
$flag=false;
for($i=1;$i<$j;$i++){
if($array[$i-1]>$array[$i]){
$temp=$array[$i-1];
$array[$i-1]=$array[$i];
$array[$i]=$temp;
$flag=true;
}
}
$j--;
}
return$array;
}
方案四:
如果有100個(gè)數(shù)的數(shù)組,僅前面10個(gè)無(wú)序,后面90個(gè)都已排好序且都大于前面10個(gè)數(shù)字,那么在第一趟遍歷后,最后發(fā)生交換的位置必定小于10,且這個(gè)位置之后的數(shù)據(jù)必定已經(jīng)有序了,記錄下這位置,第二次只要從數(shù)組頭部遍歷到這個(gè)位置就可以了。
<?php
functionbubble4_sort($array)
{
$count=count($array);
if($count<=1){
return$array;
}
$flag=$count;
while($flag>0){
$k=$flag;
$flag=0;
for($j=1;$j<$k;$j++){
if($array[$j-1]>$array[$j]){
$temp=$array[$j-1];
$array[$j-1]=$array[$j];
$array[$j]=$temp;
$flag=$j;
}
}
}
return$array;
}
方案五:
<?php
functionbubble_sort($array)
{
$count=count($array);
if($count<=1){
return$array;
}
for($i=$count-1;$i>0;$i--){
$flag=false;
for($j=0;$j<$count;$j++){
if($array[$j]>$array[$j+1]){
$temp=$array[$j];
$array[$j]=$array[$j+1];
$array[$j+1]=$temp;
$flag=true;
}
}
if(!$flag)
break;
}
return$array;
}
以上就是PHP實(shí)現(xiàn)冒泡排序多種方法的詳細(xì)介紹,最后想要了解更多關(guān)于PHP開發(fā)發(fā)展前景趨勢(shì),請(qǐng)關(guān)注扣丁學(xué)堂官網(wǎng)、微信等平臺(tái),扣丁學(xué)堂PHP培訓(xùn)IT職業(yè)在線學(xué)習(xí)教育平臺(tái)為您提供權(quán)威的PHP視頻教程系統(tǒng),通過千鋒扣丁學(xué)堂金牌講師在線錄制的一套PHP視頻教程課程,讓你快速掌握PHP從入門到精通開發(fā)實(shí)戰(zhàn)技能??鄱W(xué)堂PHP開發(fā)工程師技術(shù)交流群:374332265。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“php培訓(xùn)資訊”的相關(guān)文章>>
標(biāo)簽:
PHP培訓(xùn)
PHP視頻教程
PHP從入門到精通
PHP學(xué)習(xí)路線圖
PHP開發(fā)工程師