目錄
異形陣列的遍歷" >異形陣列的遍歷
快速排序演算法 " > 快速排序演算法
插入排序演算法" >插入排序演算法
歸併排序演算法 " >歸併排序演算法
首頁 後端開發 php教程 PHP實作陣列排序的方法:快速排序,插入排序,歸併排序演算法

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

Jul 19, 2018 pm 02:20 PM
數組排序

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

熱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整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1663
14
CakePHP 教程
1420
52
Laravel 教程
1313
25
PHP教程
1266
29
C# 教程
1239
24
PHP 中保留鍵名的快速數組排序方法 PHP 中保留鍵名的快速數組排序方法 May 02, 2024 pm 03:06 PM

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

JS數組排序:sort()方法的工作原理和機制深入解析 JS數組排序:sort()方法的工作原理和機制深入解析 Dec 28, 2023 am 11:47 AM

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

PHP 數組自訂排序演算法的編寫指南 PHP 數組自訂排序演算法的編寫指南 Apr 27, 2024 pm 06:12 PM

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

PHP 陣列依數值排序後如何保持鍵名? PHP 陣列依數值排序後如何保持鍵名? May 02, 2024 pm 04:09 PM

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

PHP 中按自訂排序規則對陣列進行排序,保留原始鍵名 PHP 中按自訂排序規則對陣列進行排序,保留原始鍵名 May 04, 2024 am 09:27 AM

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

PHP中的asort()函數會將陣列依值排序 PHP中的asort()函數會將陣列依值排序 Nov 18, 2023 am 10:56 AM

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

使用PHP函數 'sort' 對陣列依升序進行排序 使用PHP函數 'sort' 對陣列依升序進行排序 Jul 25, 2023 am 09:28 AM

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

PHP陣列多維排序的妙招:最佳化排序效率 PHP陣列多維排序的妙招:最佳化排序效率 Apr 30, 2024 am 09:54 AM

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

See all articles