小編給大家分享一下PHP排序算法系列之歸并排序的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
為德城等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及德城網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站制作、成都做網(wǎng)站、德城網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!歸并排序
歸并排序(MERGE-SORT)是建立在歸并操作上的一種有效的排序算法,該算法是采用分治法(Divide and Conquer)的一個(gè)非常典型的應(yīng)用。將已有序的子序列合并,得到完全有序的序列;即先使每個(gè)子序列有序,再使子序列段間有序。若將兩個(gè)有序表合并成一個(gè)有序表,稱為二路歸并。
歸并過(guò)程
歸并排序的核心就是如何將兩個(gè)有序序列進(jìn)行合并,假定有兩個(gè)有序數(shù)組,比較兩個(gè)有序數(shù)組的首個(gè)元素,誰(shuí)小就取誰(shuí),并將該元素放入第三個(gè)數(shù)組中,取了之后在相應(yīng)的數(shù)組中將刪除此元素,依次類推,當(dāng)取到一個(gè)數(shù)組已經(jīng)沒(méi)有元素時(shí),就可將另一數(shù)組的剩余元素直接添加到第三個(gè)數(shù)組中。
原理
1、將序列每相鄰兩個(gè)數(shù)字進(jìn)行歸并操作,形成ceil(n/2)個(gè)序列,排序后每個(gè)序列包含兩個(gè)元素,最后一個(gè)序列可能只有一個(gè)元素。
2、將上述序列再次歸并,形成ceil(n/4)個(gè)序列,每個(gè)序列包含四個(gè)元素,最后一個(gè)序列可能只有三個(gè)及以下元素。
3、重復(fù)步驟2,直到所有元素排序完畢。
舉例
對(duì)數(shù)組[53,89,12,6,98,25,37,92,5]進(jìn)行排序
第一次歸并后
(53,89),12,(6,98),(25,37),(5,92)
第二次歸并后
(12,53,89),(6,25,37,98),(5,92)
第三次歸并后
(6,12,25,37,53,89,98),(5,92)
第四次歸并后
5,6,12,25,37,53,89,92,98
PHP代碼實(shí)現(xiàn)
看完了這篇文章,相信你對(duì)“PHP排序算法系列之歸并排序的示例分析”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
名稱欄目:PHP排序算法系列之歸并排序的示例分析-創(chuàng)新互聯(lián)
鏈接地址:http://weahome.cn/article/cojsog.html