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者合併起來,就是最終結果。
如果左邊數組和右邊數組還不是排好序的數組,則繼續遞歸使用本函數來取得有序數組。
原理圖:
#原理資料:
$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項就可以遵照上述原理來進行“插入排序”,於是前兩個就可以排好,
並成為了具有兩個元素的「排好序的陣列」。後續以此類推。
原理圖:
原理資料:
$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個單元,這種數組自然是排好序的了。
原理圖:
#原理資料:
#$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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP中保留鍵名的快速數組排序方法:使用ksort()函數對鍵進行排序。使用uasort()函數使用使用者定義的比較函數進行排序。實戰案例:若要依分數對使用者ID和分數的陣列進行排序,同時保留使用者ID,可以使用uasort()函數和自訂比較函數。

深入理解JS數組排序:sort()方法的原理與機制,需要具體程式碼範例導語:陣列排序是在我們日常的前端開發工作中非常常見的操作之一。 JavaScript中的陣列排序方法sort()是我們最常使用的陣列排序方法之一。但是,你是否真正了解sort()方法的原理與機制呢?本文將帶你深入理解JS數組排序的原理和機制,並提供具體的程式碼範例。一、sort()方法的基本用法

如何寫自訂PHP數組排序演算法?冒泡排序:透過比較和交換相鄰元素來排序數組。選擇排序:每次選擇最小或最大元素並與目前位置交換。插入排序:逐一插入元素到有序部分。

在PHP中按值排序數組,同時保留鍵名的方法是:使用usort()函數按值排序數組。向usort()函數傳遞一個匿名函數作為比較函數,該函數傳回元素值的差異。 usort()會根據匿名函數對陣列進行排序,同時保持鍵名不變。

在PHP中,使用uasort()函數可依自訂排序規則對陣列進行排序,同時保留原始鍵名。自訂比較函數是一個接受兩個元素作為輸入並傳回整數的函數:負數表示前者小於後者,零表示相等,正數表示前者大於後者。

PHP中的asort()函數會將陣列依值排序,需要具體程式碼範例PHP是一種廣泛使用的伺服器端腳本語言,它具有豐富的陣列處理函數。其中,asort()函數是一個非常有用的函數,它可以依照陣列的值進行排序。本文將詳細介紹asort()函數的使用方法,並給出具體的程式碼範例。 asort()函數的作用是將陣列依照值升序排列,同時保持鍵和值的關聯。它是透過修改原數

使用PHP函數"sort"將陣列依升序排序在PHP中,可以很方便地使用內建函數來對陣列進行排序。其中,sort函數是最常用的函數之一,可以將陣列依照升序進行排序。本文將介紹如何使用sort函數,並給出對應的程式碼範例。 sort函數的語法如下:sort(array&$array,int$sort_flags=SORT_REGULAR):boo

優化PHP中多維數組排序的技巧:建立使用者自訂函數進行排序使用array_multisort()函數應用多維鍵重排序實戰案例:按數組鍵值對產品排序
