国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 邏輯算法 > 正文

PHP實現數組排序的方法:快速排序,插入排序,歸并排序算法

2020-03-22 17:48:35
字體:
來源:轉載
供稿:網友

php中對于數組的排序方法是有很多種的,每種數組排序也都有各自不同的原理,下面就來具體看一下關于快速排序算法,歸并排序算法以及插入排序算法的示例。

異形數組的遍歷

求如下數組中數字的平均值:

$arr1 = array(1, 2, array(31, 32, 33), 4,array(51, 52, 53, array(541, 542, 543, 544) ),6, array(71, 72, 73),$count = 0; //計數$sum = GetArraySum($arr1);echo “/
快速排序算法

原理描述:

對于這樣一個數組:[5, 1,2, 6,7];

取出第一項(并作為中間數組),并將其余項與其對比后,分為兩個數組:

左邊數組項比中間項小,右邊數組不比中間項小。

如果左邊數組和右邊數組已經是排好序的數組,則將這3者合并起來,就是最終結果。

如果左邊數組和右邊數組還不是排好序的數組,則繼續遞歸使用本函數獲取有序數組。

原理圖:

QQ截圖20180719140656.png

原理性數據:

$arr1 = [5, 2, 1, 6,7]; //有力說明原理的數據1

小的:[2, 1], 大的:[6, 7], 中間的: [5]

將三者合并: [1, 2, 5, 6, 7];

$arr1 = [2, 1]; //有力說明原理的數據2

中間:[2], 左邊:[1] , []

具體案例:

$arr1 = [5, 2, 4, 6, 1, 3];$arr1 = [5, 2, 4, 6, 1, 3];//$arr1 = [5, 3, 2, 8, 7];echo “/
插入排序算法

原理描述:

對于這樣一個數組:[2, 3, 4, 1];

要將某個數n插入到一個已經排好序的數組中,

只要將n跟這個數組的項從后往前一個一個對比,只要發現某項比n大,

就將該項后移一位,然后繼續往前取出并對比,比n大就往后移動一位,以此類推。

最后沒有比n大的時候,就把n放入到剛才往后移動時空出來的那個位置上。

對于一個數組,第1項就可以當做一個“已經排好序”的數組,

則第2項就可以遵照上述原理來進行“插入排序”,于是前兩個就可以排好,

并成為了具有兩個元素的“排好序的數組”。后續以此類推。

原理圖:

QQ截圖20180719140722.png

原理數據:

$arr1 = [2, 3, 4, 1]; //有力說明原理的數據1

$arr1 = [2, 3, 1]; //有力說明原理的數據2

$arr1 = [2, 1]; //有力說明原理的數據3

$arr1 = [1, 2]; //有力說明原理的數據3

具體案例:

$arr1 = [5, 2, 4, 6, 1, 3];$arr1 = [2, 3, 4, 1];$arr1 = [2, 4, 5, 6, 1, 3];echo “/
歸并排序算法

原理描述:

對于這樣的一個數組: $arr1 = [1, 3, 5, 2, 4, 6];將其一分為二:$a = [1, 3, 5],
$b = [2, 4, 6];

如果有兩個各自已經排好序的數組,則對這兩個數組進行如下操作后,就可以獲得一個排好序的這兩個數組的“溶合數組”:

取出數組a的第一項a1,再取出數組b的第一項b1,比較a1和b1的大小,

并將小的(假設為a1)放入一個新數組,并去刪除對應數組a的第一項,

而后再取出對應數組的第一項(不是剛才的那個數據了),而后繼續將兩者對比大小

每次都放入小的到新數組中,并繼續下一次的“刪除,取數,對比”。。。。

這樣之后最終的結果是,新的數組中就可以得到一個新的排好序的數組。

對于尚未排好序的數組,只要對其以遞歸方式繼續“一分為二”地分割,最終會得到最短數組——只有一個或0個單元,這種數組自然是排好序的了。

原理圖:

QQ截圖20180719140740.png

原理數據:

$arr1 = [1, 3, 5, 4, 6, 7, 8 ]; //有力說明原理的數據1

從中間一份為2: [ ]; [ 6, 7, 8]

[ 1, 3, 4, 5, ]

$arr1 = [1, 3, 2, 4]; //有力說明原理的數據2

演示案例:


$arr1 = [5, 2, 4, 6, 1, 3];echo “/

相關推薦:

php 冒泡排序 快速排序,php冒泡排序

php 數組排序方法分享(冒泡排序、選擇排序)

以上就是PHP實現數組排序的方法:快速排序,插入排序,歸并排序算法的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 双峰县| 江门市| 柳江县| 梓潼县| 海门市| 新巴尔虎右旗| 卢湾区| 黄骅市| 资阳市| 祁东县| 伊通| 桐庐县| 汤原县| 青阳县| 乐平市| 宁武县| 文水县| 长春市| 乌兰县| 浦县| 阳信县| 钟山县| 科尔| 抚远县| 南康市| 德安县| 安福县| 内乡县| 武宣县| 康马县| 普兰县| 简阳市| 武功县| 灵寿县| 哈密市| 寻乌县| 鱼台县| 清涧县| 麻阳| 麻阳| 海晏县|