搜尋
首頁後端開發php教程PHP實作陣列排序的方法:快速排序,插入排序,歸併排序演算法

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者合併起來,就是最終結果。

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

原理圖:

PHP實作陣列排序的方法:快速排序,插入排序,歸併排序演算法

#原理資料:

$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項就可以遵照上述原理來進行“插入排序”,於是前兩個就可以排好,

並成為了具有兩個元素的「排好序的陣列」。後續以此類推。

原理圖:

PHP實作陣列排序的方法:快速排序,插入排序,歸併排序演算法

原理資料:

$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個單元,這種數組自然是排好序的了。

原理圖:

PHP實作陣列排序的方法:快速排序,插入排序,歸併排序演算法

#原理資料:

#$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中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何使PHP應用程序更快如何使PHP應用程序更快May 12, 2025 am 12:12 AM

tomakephpapplicationsfaster,關注台詞:1)useopcodeCachingLikeLikeLikeLikeLikePachetoStorePreciledScompiledScriptbyTecode.2)MinimimiedAtabaseSqueriSegrieSqueriSegeriSybysequeryCachingandeffeftExting.3)Leveragephp7 leveragephp7 leveragephp7 leveragephpphp7功能forbettercodeefficy.4)

PHP性能優化清單:立即提高速度PHP性能優化清單:立即提高速度May 12, 2025 am 12:07 AM

到ImprovephPapplicationspeed,關注台詞:1)啟用opcodeCachingwithapCutoredUcescriptexecutiontime.2)實現databasequerycachingingusingpdotominiminimizedatabasehits.3)usehttp/2tomultiplexrequlexrequestsandreduceconnection.4 limitesclection.4.4

PHP依賴注入:提高代碼可檢驗性PHP依賴注入:提高代碼可檢驗性May 12, 2025 am 12:03 AM

依赖注入(DI)通过显式传递依赖关系,显著提升了PHP代码的可测试性。1)DI解耦类与具体实现,使测试和维护更灵活。2)三种类型中,构造函数注入明确表达依赖,保持状态一致。3)使用DI容器管理复杂依赖,提升代码质量和开发效率。

PHP性能優化:數據庫查詢優化PHP性能優化:數據庫查詢優化May 12, 2025 am 12:02 AM

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi

簡單指南:帶有PHP腳本的電子郵件發送簡單指南:帶有PHP腳本的電子郵件發送May 12, 2025 am 12:02 AM

phpisusedforsenderemailsduetoitsbuilt-inmail()函數andsupportivelibrariesLikePhpMailerAndSwiftMailer.1)usethemail()functionForbasiceMails,butithasimails.2)butithasimail.2)

PHP性能:識別和修復瓶頸PHP性能:識別和修復瓶頸May 11, 2025 am 12:13 AM

PHP性能瓶颈可以通过以下步骤解决:1)使用Xdebug或Blackfire进行性能分析,找出问题所在;2)优化数据库查询并使用缓存,如APCu;3)使用array_filter等高效函数优化数组操作;4)配置OPcache进行字节码缓存;5)优化前端,如减少HTTP请求和优化图片;6)持续监控和优化性能。通过这些方法,可以显著提升PHP应用的性能。

PHP的依賴注入:快速摘要PHP的依賴注入:快速摘要May 11, 2025 am 12:09 AM

依賴性注射(DI)InphpisadesignPatternthatManages和ReducesClassDeptions,增強量強制性,可驗證性和MATIALWINABIOS.ItallowSpasspassingDepentenciesLikEdenciesLikedAbaseConnectionStoclasseconnectionStoclasseSasasasasareTers,interitationAseTestingEaseTestingEaseTestingEaseTestingEasingAndScalability。

提高PHP性能:緩存策略和技術提高PHP性能:緩存策略和技術May 11, 2025 am 12:08 AM

cachingimprovesphpermenceByStorcyResultSofComputationsorqucrouctationsorquctationsorquickretrieval,reducingServerLoadAndenHancingResponsetimes.feftectivestrategiesinclude:1)opcodecaching,whereStoresCompiledSinmememorytssinmemorytoskipcompliation; 2)datacaching datacachingsingMemccachingmcachingmcachings

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具