标题说明了一切。所以我对合并排序的理解是我们遍历两个列表并将项插入第三个列表。通过确保我们比较前两个列表之间的项目,我们可以在第三个列表中以有序的形式合并列表。但是,我没有看到任何互换发生。我只看到比较,然后只是编写数据。 mergesort在技术上没有交换吗?
答案 0 :(得分:1)
排序答案是合并排序没有交换,或者更好的说法是不需要交换。我们可以创建一个临时数组,该数组将作为按顺序合并的数组的长度之和返回。当合并排序将它们分解为单重态时,我们可以看到这一点。当您处于单重态级别时,我们必须通过更长的数组来传递,因此我们不交换任何内容。此外,在单重态方面,我们只需要进行一次比较,然后生成长度为2的数组并将它们按顺序放置。当此数组与另一个数组相遇时,我们获得两个数组的长度以构建其和的数组,然后向下走两个数组进行比较以将它们按顺序放入新数组中。再次,我们看到不需要新的交换操作即可执行此操作,并且由于递归的原因,此过程将遵循相同的过程,直到我们拥有一个完整的排序数组为止。由于单重态和合并2个数组的一般情况不需要交换,而只需要比较,因此整个算法不需要交换就可以对数组进行排序。 因此,总之,技术上合并排序没有交换。
希望这项帮助-杰森