PHP實(shí)現(xiàn)冒泡排序的簡單實(shí)例
1、首先我們必須弄清楚什么是冒泡排序,不理解冒泡排序的原理,我們就無法寫出代碼。
冒泡排序(BubbleSort)的基本概念是:依次比較相鄰的兩個(gè)數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個(gè)和第2個(gè)數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個(gè)數(shù)和第3個(gè)數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個(gè)數(shù),將小數(shù)放前,大數(shù)放后。至此第一趟結(jié)束,將最大的數(shù)放到了最后。在第二趟:仍從第一對數(shù)開始比較(因?yàn)榭赡苡捎诘?個(gè)數(shù)和第3個(gè)數(shù)的交換,使得第1個(gè)數(shù)不再小于第2個(gè)數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到倒數(shù)第二個(gè)數(shù)(倒數(shù)第一的位置上已經(jīng)是最大的),第二趟結(jié)束,在倒數(shù)第二的位置上得到一個(gè)新的最大數(shù)(其實(shí)在整個(gè)數(shù)列中是第二大的數(shù))。如此下去,重復(fù)以上過程,直至最終完成排序。
PHP實(shí)現(xiàn)代碼:
<?php
//冒泡排序方法
function bubblesort(&$arr){
//定義一個(gè)變量保存交換的值
$temp =0;
for($i=0;$i<count($arr);$i++){
for($j=0;$j<count($arr)-$i-1;$j++){
if($arr[$j]>$arr[$j+1]){
//如果前面的那個(gè)數(shù)大于后面的那個(gè)數(shù),那么他們就進(jìn)行交換
$temp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
}
}
}
}
$arr=array(100,99,200,5,-4,6,-7);
bubbleSort($arr);
print_r($arr); //數(shù)組是值傳遞,所以傳遞的時(shí)候加個(gè)&符號就是地址傳遞,改變外部變量
?>
以上這篇PHP實(shí)現(xiàn)冒泡排序的簡單實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
PHP Laravel框架異步執(zhí)行的實(shí)現(xiàn)詳解
Laravel是一套簡潔、優(yōu)雅的PHP Web開發(fā)框架(PHP Web Framework)。它可以讓你從面條一樣雜亂的代碼中解脫出來;它可以幫你構(gòu)建一個(gè)完美的網(wǎng)絡(luò)APP,而且每行代碼都可以簡潔、富于表達(dá)力2022-07-07
PHP根據(jù)兩點(diǎn)間的經(jīng)緯度計(jì)算距離
這篇文章主要介紹了PHP如何根據(jù)兩點(diǎn)間的經(jīng)緯度計(jì)算距離,代碼很簡單,但很實(shí)用,需要的朋友可以參考下2014-10-10
[PHP]經(jīng)常用到的實(shí)用函數(shù)集合
[PHP]經(jīng)常用到的實(shí)用函數(shù)集合...2007-11-11
從MySQL數(shù)據(jù)庫表中取出隨機(jī)數(shù)據(jù)的代碼
這個(gè)例子是用于一個(gè)簡單的應(yīng)用開發(fā)了,意思就是把現(xiàn)在表中的所有數(shù)據(jù)我們隨機(jī)讀出來一次之后再進(jìn)行隨機(jī)保存到另一個(gè)表,從而達(dá)到了記錄隨機(jī)的功能2007-09-09
PHP中session跨子域的三種實(shí)現(xiàn)方法
做項(xiàng)目的時(shí)候跨域問題在cooike及session中我們經(jīng)常會(huì)使用到了,不過php對于子域處理是比較簡單的了,小編整理了三個(gè)解決方案,下面一起來看看。2016-07-07

