本文共 1529 字,大约阅读时间需要 5 分钟。
归并排序是一种高效的稳定排序算法,广泛应用于数组排序场景。其核心思想是将数组分成若干个子数组进行排序,然后将这些已排序的子数组按顺序合并,最终得到整个数组的有序结果。
下面,我们以一个简单的PHP示例来展示归并排序的实现及其应用。
归并排序的步骤分为以下几个部分:
以下是基于PHP编写的归并排序实现代码:
function merge($arr) { $n = count($arr); if ($n < 2) { return $arr; } $k = 1; while ($k <= $n) { $tmp = []; $f1 = 0; while ($f1 + $k < $n) { $f2 = $f1 + $k - 1; $s1 = $f2 + 1; $s2 = min($s1 + $k - 1, $n - 1); $p = $f1; $q = $s1; while ($p <= $f2 && $q <= $s2) { if ($arr[$p] < $arr[$q]) { $tmp[] = $arr[$p++]; } else { $tmp[] = $arr[$q++]; } } while ($p <= $f2) { $tmp[] = $arr[$p++]; } while ($q <= $s2) { $tmp[] = $arr[$q++]; } $f1 = $s2 + 1; } for ($i = $f1; $i < $n; $i++) { $tmp[] = $arr[$i]; } $arr = $tmp; $k *= 2; } return $arr;} 为了验证归并排序的正确性,我们可以测试上述函数。以下是一个示例:
$arr = [9, 7, 4, 3, 6, 8, 5, 2, 1, 10];$result = merge($arr);print_r($result);
运行上述代码,输出结果如下:
Array( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 [9] => 10)
通过以上实现,我们可以清晰地看到归并排序在实际应用中的高效性。该算法不仅适用于数组排序,还可以扩展到其他数据结构的排序问题。
转载地址:http://yhvfk.baihongyu.com/