这一部分来分析一下归并排序,归并排序是把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。看一下代码

5,排序-归并排序

先把待排序列分为两部分,然后各部分再分为两部分,一直分下去,直到不能再分为止,然后在两两合并两个有序数组,直到合并完为止。有序数组的合并也很好理解,代码可以参考上面。上面代码在合并的时候都会创建一个临时数组tmp,如果排序的数组很大的话,每次merge的时候都会浪费大量的空间,不是最好的解决方式,这里可以优化一下,看代码

5,排序-归并排序

上面的代码都是递归实现的,下面看一个非递归实现的

5,排序-归并排序

他说先合并两个然后在合并4个,然后在合并8个……直到合并完为止,下面有一幅图来简单了解下什么叫归并排序。

5,排序-归并排序

上面的图表示的很明白,这就是归并排序的原理

相关文章:

  • 2021-12-12
  • 2021-09-29
  • 2021-11-13
  • 2021-06-13
  • 2021-10-25
  • 2022-12-23
  • 2021-07-17
  • 2022-12-23
猜你喜欢
  • 2021-06-14
  • 2022-02-19
  • 2022-03-05
  • 2022-12-23
  • 2021-07-24
  • 2021-10-07
相关资源
相似解决方案