在本文中,我们将讨论合并排序算法。我们将看到一些可视化示例来帮助理解算法,然后使用Java和Python代码实现它。
什么是合并排序算法?
合并排序算法是一种基于分而治之算法的高效排序算法。它将元素的集合(数组)划分为单个单元,然后以有序的方式合并它们。
让我们看一个示例来了解合并排序的工作原理。
我们将使用合并排序算法对以下数字数组进行排序:4、10、6、14、2、1、8、5
这是一张图片,向您展示“划分”过程:
该数组最初被分成两个单独的数组。然后这些阵列也被分割。这种划分一直持续到数组中的所有元素都成为一个单元。
在此阶段之后,合并开始。这是如何发生的:
这些元素被重新组合成数组,但这次是按排序顺序排列的。就像它们被分割开来一样,它们正在被合并。
在我们使用代码实现此算法之前,您应该了解我们如何能够按排序顺序收集这些元素。
我们将使用将元素重新组合成两个独立数组的部分 - 4,6,10,14和1,2,5,8。下面是一个插图,用于了解我们如何到达最终数组:
从上面可以看出,我们有两个箭头指向两个数组的第一个索引。将进行比较以确定哪个索引较小。在我们的例子中,1 小于 4,因此将被推送到合并的数组。然后,红色箭头将移动到下一个索引。那是:
将进行另一个比较:2<4?
2 小于 4,因此它将被推送到合并的数组,箭头移动到下一个索引。
对于下一个比较: