zoukankan      html  css  js  c++  java
  • PHP 合并排序

    • 合并排序是稳定排序,平均效率为O(nlogn),需要的辅助空间是O(n)
     1 <?php
     2     #归并排序
     3     #@param    $arr    待排序数组
     4     #@param    $from    排序的起始坐标
     5     #@param    $end    排序的结束坐标
     6     function mergeSort(&$arr, $from, $end) {
     7         #切分数组直到数组元素只剩下一个
     8         if($from < $end) {
     9             $mid = floor(($from + $end) / 2);
    10             mergeSort($arr, $from, $mid);
    11             mergeSort($arr, $mid +1, $end);
    12             
    13             #合并数组
    14             $tempArr = array();
    15             $leftInx = $from;
    16             $rightInx = $mid + 1;
    17             
    18             #合并左右两部,直到左边或右边部分全部排入临时数组
    19             while($leftInx <= $mid && $rightInx <= $end) {
    20                 if($arr[$leftInx] < $arr[$rightInx]) {
    21                     $tempArr[] = $arr[$leftInx++];
    22                 } else {
    23                     $tempArr[] = $arr[$rightInx++];
    24                 }
    25             }
    26             
    27             #处理没有排完的一部分的剩下元素,因为待合并的部分是有序数组,剩下的元素直接全部加入临时数组
    28             while($leftInx <= $mid) {
    29                 $tempArr[] = $arr[$leftInx++];
    30             }
    31             
    32             while($rightInx <= $end) {
    33                 $tempArr[] = $arr[$rightInx++];
    34             }
    35             
    36             #用临时数组的值替换掉原数组的值
    37             array_splice($arr, $from, $end - $from + 1, $tempArr);
    38         }
    39     }
    40     
    41     $arr = array(1, 1, 5, 7, 2, 4, 3, 6, 3, 0);
    42     mergeSort($arr, 0, count($arr) - 1);
    43     print_r($arr);
    44 ?>

    输出

    Array ( [0] => 0 [1] => 1 [2] => 1 [3] => 2 [4] => 3 [5] => 3 [6] => 4 [7] => 5 [8] => 6 [9] => 7 )

  • 相关阅读:
    Dolby pro logic introduction
    3.8 Language Support(audio)
    what is dual mono
    会计misc
    除权除息
    MPEG2-TS音视频同步原理(PCR dts pts)
    计算视频文件(包含PCR)播放带宽的方法 PCR计算码率
    cocos2d 动作切换
    cocos2d 播放音乐
    cocos2d 主角更随触屏走
  • 原文地址:https://www.cnblogs.com/zemliu/p/2648399.html
Copyright © 2011-2022 走看看