如何使用合并排序删除重复项?

Deg*_*egg 3 c algorithm mergesort

我使用递归合并排序来排序链接列表,但在合并排序期间我想删除重复项.任何人都知道如何实现这一目标?

我正在使用C代码.

Tim*_*Tim 8

在合并排序中,您将采用两个(或更多)已排序的列表重复应用以下规则:

  • 找到每个输入列表顶部的较小/最少的项目,如果有关系,则选择任何最低项目
  • 从列表中删除该项目
  • 将其添加到输出列表中

要删除重复项,您只需稍微修改规则:

  • 找到每个输入列表顶部的较小/最少的项目,如果有关系,则选择任何最低项目
  • 从列表中删除该项目
  • 如果它与您添加到输出列表中的最后一项相同,则将其丢弃
  • 否则,将其添加到您的输出列表

这将确保输出列表中没有两个连续项目相同,并且其中的项目按顺序排列,这就是您所追求的.


mon*_*ksy 7

要使用合并排序来删除重复项,您将忽略在合并过程中重复的元素.

  • 这个答复反复回答了这个问题. (4认同)