美文网首页
多语言实现归并排序算法

多语言实现归并排序算法

作者: 过往云技 | 来源:发表于2019-01-17 10:22 被阅读0次

概述

归并算法采用分治法:
1: 把长度为 n 的 array 分成两半。
3: 把左半边 array 及右半边 array 分别以 Merge Sort 进行 sorting。 (recursive)
3: merge 左半边及右半边 sorted array。

PHP 实现(递归方法)

function mergeSort(array $array):array
{
    $count = count($array);
    if($count < 2){
        return $array;
    }

    $left = $right = [];
    $middle = round($count / 2);

    $left = array_slice($array, 0, $middle);
    $right = array_slice($array, $middle);

    $leftArray = mergeSort($left);
    $rightArray = mergeSort($right);

    return merge($leftArray, $rightArray);
}

function merge(array $leftArray, array $rightArray):array
{
    $tempArray = [];
    while (count($left) > 0 && count($right) > 0) {
        if($left[0] < $right[0]){
            $tempArray[] = array_shift($left);
        } else {
            $tempArray[] = array_shift($right);
        }
    }

    return array_merge($tempArray, $left, $right);
}


var_export(mergeSort([12, 34, 3, 2, 67, 21, 1, 56]));

JavaScript 实现(递归法)

function memgeSort(array){
  var left = [], right = [], leftArray = [], rightArray = [];
  var len = array.length
  if(len < 2){
     return array
  }
  
  var middle = parseInt(len / 2)
  left = array.slice(0, middle)
  right = array.slice(middle)

  leftArray = memgeSort(left)
  rightArray = memgeSort(right)
  
  return sort(left, right)
}

function sort(left, right){
  var res = [];
 
  while(left.length > 0 && right.length > 0 ){
        if(left[0] < right[0]){
          res.push(left.shift())
        } else {
          res.push(right.shift())
        }
  }
  
  return res.concat(left, right)
}

相关文章

  • 2018-06-30

    排序算法之归并排序 归并排序算法是排序算法中的经典算法之一,其核心思想是利用归并的思想实现的排序方法,该算法采用经...

  • 排序算法之归并排序

    归并排序(Merge Sort) 归并排序是利用归并的思想实现排序的方式,该算法采用的是经典的分治算法 归并排序过...

  • 第三章:高级排序算法

    归并排序算法(mergeSort) 算法思想:Python使用函数实现: 自底向上的归并排序算法 算法思想:Pyt...

  • 归并排序

    图解排序算法(四)之归并排序 基本思想 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用...

  • 归并排序&快速排序

    归并排序 利用归并的思想实现排序方法,该算法采用经典的分治策略,分而治之。 代码实现 基础设置 归并排序 —— 非...

  • 排序算法详细代码实现

    算法分类 算法时间复杂度 选择排序 插入排序 C++实现 Python实现 冒泡排序 Python实现 归并排序 ...

  • Java版归并排序算法实现

    merge函数的实现 递归方式实现(自顶向下)的归并排序算法 借用栈实现循环方式(自顶向下)的归并排序算法 不借用...

  • iOS算法总结-归并排序

    归并排序算法: 归并排序(Merging Sort) 就是利用归并的思想实现的排序方法。它的原理是假设初始序列含有...

  • 数据结构与算法 08: 归并排序

    归并排序算法: 归并排序(Merging Sort) 就是利用归并的思想实现的排序方法。它的原理是假设初始序列含有...

  • 归并排序算法实现

    排序算法是最常见,最基础的算法,作者文集中记录了两种排序算法(插入排序,归并排序) 归并排序实现原理是切刀流,先中...

网友评论

      本文标题:多语言实现归并排序算法

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