美文网首页
PHP实现:二分归并排序

PHP实现:二分归并排序

作者: JennyGump | 来源:发表于2017-01-04 00:18 被阅读0次
# 分
function slice($arr)
{
  if (sizeof($arr) <= 1) {
    return $arr;
  }

  $mid = intval(sizeof($arr) / 2);

  $left = array_slice($arr, 0, $mid);
  $right= array_slice($arr, $mid);

  $larr = slice($left);
  $rarr = slice($right);

  $merge = merge($larr , $rarr);
  show_array($merge);
  return $merge;
}

#归并
function merge($arr_left , $arr_right){
  $min = [];
  while(sizeof($arr_left) && sizeof($arr_right)){
    $min[] = $arr_left[0] < $arr_right[0] ?
        array_shift($arr_left) : array_shift($arr_right);
  }

  $arr = [];
  if(sizeof($min) > 0){
    if (sizeof($arr_left) >0 ) {
      $arr += array_merge($min , $arr_left);
    }

    if (sizeof($arr_right) >0 ) {
      $arr += array_merge($min , $arr_right);
    }
  }
  return $arr;
}

相关文章

网友评论

      本文标题:PHP实现:二分归并排序

      本文链接:https://www.haomeiwen.com/subject/dnxovttx.html