日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php语言冒泡法,冒泡排序法(php)

發(fā)布時間:2024/4/19 php 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php语言冒泡法,冒泡排序法(php) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

/**

*?排序算法:使一個數(shù)列的值按照某個規(guī)則進行排序的算法,也可以說是用于確定一個數(shù)列中每個值的次序位置的算法。

*?????在上述定義中涉及數(shù)列中每個成員的值和其對應(yīng)的次序位置(以下簡稱次位,次位是一個成員的屬性,可以看做次序,權(quán),位置,編號等),

*?將一個數(shù)列與其進行排序后的新數(shù)列對比,其對應(yīng)值的次位(或者說對應(yīng)次位的值,也可以說值與次位的對應(yīng)關(guān)系)會按照排序規(guī)則發(fā)生變化(除非原數(shù)列已經(jīng)完全符合排序規(guī)則),

*?所以說,排序算法的實質(zhì)也就是對數(shù)列成員值與次位的對應(yīng)關(guān)系的調(diào)整。

*?按從左到右,從前到后,對應(yīng)次位首尾。

*?冒泡排序法:默認(rèn)次位按照排序規(guī)則從左到右排列,從首位(或末位)開始依次取得排序后該次位對應(yīng)的值。

*?快速排序法:將數(shù)列第一個單元作為界限,按排序規(guī)則將數(shù)列剩余成員分為兩個數(shù)列,每個數(shù)列遞歸重復(fù)上述操作(直至剩余成員為1或0),將遞歸的每一層都按照?左側(cè)數(shù)列?界線成員?右側(cè)數(shù)列?的次序重組為一個數(shù)列。

*

*/

/**

*?冒泡排序

*?形象闡述:

就像是深水中的泡泡上浮的過程(假設(shè)永遠(yuǎn)到不了水面,即深度絕對足夠泡泡縱向排列次序達(dá)到穩(wěn)定),

大的泡泡總會比小的泡泡上浮速度快,從而最終狀態(tài)為由下至上泡泡依次變大。

*?過程闡述:

以最下面泡泡為第一位,從第一位泡泡起,與上一個泡泡比較大小,如果大的話就交換位置(否則不交換),

然后用現(xiàn)狀態(tài)的第二位繼續(xù)與上一位比較,判斷是否交換,依次直到與最上面的泡泡比較后,就確定了最大的泡泡。

然后再從第一位起,向上比較與交換,直到確定第二大的泡泡(此時比較的次數(shù)已經(jīng)減一,無需與最大再比較了)。

重復(fù)上述操作,直到所有位都確定時,排序完成。

*?概念闡述:

凡是通過比較,逐個確定排序后每個位置上的值的排序方法,可以稱之為冒泡排序法

*?注意點:

冒泡排序可以對數(shù)列進行升序或降序排列,由比較條件確定

因為是逐個確定排序后每個位置上的值,所以確定次序又可分為從前到后和從后到前兩種,由循環(huán)確定。

無論哪種寫法,泡泡個數(shù)(即數(shù)列成員個數(shù)或者說數(shù)組長度)都是需要知道的。

*?以下給出?php?語言實現(xiàn)的兩種實現(xiàn)

*

*/

//?結(jié)果是升序,且結(jié)果是從后到前依次確定的,先確定的是最大的值

function?bubbleSort($numbers){

$len?=?count($numbers);

for($i?=?0;?$i?

for($j?=?0;?$j?

if($numbers[$j]?>?$numbers[$j?+?1]){????//??比較的符號決定了結(jié)果的升降序。比較的是相鄰兩個位

$temp?=?$numbers[$j];???????????????//??符合交換條件,對兩個值進行交換,這里用了三步,在?php?中也有別的方法對兩個值進行交換

$numbers[$j]?=?$numbers[$j?+?1];

$numbers[$j?+?1]?=?$temp;

}

}

}

return?$numbers;

}

//?$num?=?array(20,?40,?60,?80,?30,?70,?90,?10,?50,?0);

//?var_dump(bubbleSort($num));

//?一直以為下面這種也是冒泡排序,其實不是的,不過是個變種,思想不一樣

// 結(jié)果是升序,且結(jié)果是從前到后依次確定的,先確定的是最小的值

function?anotherSort($numbers){

$len?=?count($numbers);

for($i?=?0;?$i?

for($j?=?$i?+?1;?$j?

if($numbers[$i]?>?$numbers[$j]){????????//??比較的符號決定了結(jié)果的升降序。比較的是待確定值的位置上的值與所有剩余的自由值。

$temp?=?$numbers[$i];???????????????//??符合交換條件,對兩個值進行交換,這里用了三步,在?php?中也有別的方法對兩個值進行交換

$numbers[$i]?=?$numbers[$j];

$numbers[$j]?=?$temp;

}

}

}

return?$numbers;

}

//?$num?=?array(20,?40,?60,?80,?30,?70,?90,?10,?50,?0);

//?var_dump(bubbleSort_1($num));

總結(jié)

以上是生活随笔為你收集整理的php语言冒泡法,冒泡排序法(php)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。