php歸併排序演算法示例

2021-09-02 21:43:19 字數 1120 閱讀 1533

看指標型的歸併演算法好麻煩,自己動手寫乙個,供自己學習用。

<?php

/*** php 歸併排序演算法示例。這是無指標型的,**容易看懂。

* 實際生產應用中,用指標速度更快。

* * 輸出如下:

* *

start : 0 end: 1 臨時陣列:array ( 0 => 30, 1 => 66, )

start : 2 end: 3 臨時陣列:array ( 0 => 6, 1 => 45, )

start : 0 end: 3 臨時陣列:array ( 0 => 6, 1 => 30, 2 => 45, 3 => 66, )

最終結果:array ( 0 => 6, 1 => 30, 2 => 45, 3 => 66, )

* *

* @author xieye

*/$arr = [30, 66, 45,6,]; // 原始陣列

$sort_arr = merge_sort( $arr ); // 排序

echo "最終結果:".var_export( $sort_arr, 1 ) ; //列印結果

// 歸併演算法總函式

function merge_sort ( array $arr )

// 遞迴分治,歸併,此演算法本身的思想是非常巧妙的。

function msort ( array $arr, $start, $end )

end: "." 臨時陣列:". var_export( $temparr, 1 )."

";foreach ($temparr as $v)

}return $arr;

}// 單獨的歸併演算法,不含分治。

// 前提是 start到mid部分是有序的,mid到end部分是有序的。所以合併的結果也是有序的。

// 歸併演算法的唯一缺點是,需要一塊跟原陣列一樣大的記憶體空間。

function merge ( array $arr, $start, $mid, $end )

else

} elseif (! $arr_left) else

}return $temparr;

}

PHP 實現歸併排序演算法

下列 來自 五分鐘學演算法,演示了歸併演算法的原理和步驟。原理 利用遞迴,先拆分 後合併 再排序。步驟 歸併排序主程式 function mergesort arr 遞迴結束條件,到達這步的時候,陣列就只剩下乙個元素了,也就是分離了陣列 mid intval len 2 取陣列中間 left arr...

PHP 實現歸併排序演算法

下列 來自 五分鐘學演算法,演示了歸併演算法的原理和步驟。原理 利用遞迴,先拆分 後合併 再排序。步驟 歸併排序主程式 function mergesort arr 遞迴結束條件,到達這步的時候,陣列就只剩下乙個元素了,也就是分離了陣列 mid intval len 2 取陣列中間 left arr...

排序演算法之 歸併排序 php

歸併排序 merge sort 是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法 divide and conquer 的乙個非常典型的應用。和選擇排序一樣,歸併排序的效能不受輸入資料的影響,但表現比選擇排序好的多,因為始終都是 o nlogn 的時間複雜度。代價是需要額外的記憶體空間...