我的老师给了我一个关于如何在Pascal中合并排序两个数组的家庭作业。
其中一个数组命名为N,排序为ASCENDING。。
其他数组名为M,排序为DESCENDING。
它们是预定义的,他希望我合并排序这两个数组。
N[2、4、5、8、10]
M[9、7、6、3、1]
合并排序[1、2、3、4、5、6、7、8、9、10]
那么我该怎么做呢?
有人能通过简单的编码示例向我解释一下这个合并排序算法吗?
你的老师很聪明,实际上你需要了解mergesort是如何合并两个已经排序的数组的。这就是mergesort的工作原理,它将问题分解,直到有两个已经排序的数组,然后将这些数组合并为一个排序的数组。将重复此合并,直到对整个数组进行排序。
这就是你需要做的(你应该自己写的代码…)
-
创建一个足够大的数组来容纳N和M 的元素
-
对于目标阵列中的每个位置,取N和M的最小剩余值。你发现的最小值如下:
a。如果没有N的元素,取M 中最小的元素
b。如果M中没有元素,则取N 中最小的元素
c。否则,比较N和M中最小的元素,取较小的元素。
因为数组已经排序,所以您确切地知道在哪个位置可以找到N和M的最小元素。