算法原理:

    PHP代码:

    1. function mergeSort($arr) {
    2. $count = count($arr);
    3. if ($count < 2) {
    4. return $arr;
    5. }
    6. $middle = floor($count/2);
    7. $left = array_slice($arr, 0, $middle);
    8. $right = array_slice($arr, $middle);
    9. $left = mergeSort($left);
    10. $right = mergeSort($right);
    11. return merge($left, $right);
    12. }
    13. function merge($arr1, $arr2) {
    14. $result = [];
    15. while (count($arr1) > 0 && count($arr2) > 0) {
    16. if ($arr1[0] > $arr2[0]) {
    17. $result[] = array_shift($arr2);
    18. } else {
    19. $result[] = array_shift($arr1);
    20. }
    21. }
    22. if(count($arr1)) {
    23. $result = array_merge($result, $arr1);
    24. }
    25. if(count($arr2)) {
    26. $result = array_merge($result, $arr2);
    27. }
    28. return $result;
    29. }