Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
614 views
in Technique[技术] by (71.8m points)

c - How do I use merge sort to delete duplicates?

I use recursive merge sort for sorting a link list, but during the merge sort I would like to delete duplicates. Anyone has insight in how to accomplish this?

I am using C code.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

In merge sort you take two (or more) already-sorted lists repeatedly apply the following rules:

  • find the lesser/least of the items of the top of each of the input lists, choosing any of the lowest items if there is a tie
  • remove that item from its list
  • add it to your output list

To remove duplicates, you simply modify the rules very slightly:

  • find the lesser/least of the items of the top of each of the input lists, choosing any of the lowest items if there is a tie
  • remove that item from its list
  • if it is the same as the last item you added to your output list, throw it away
  • otherwise, add it to your output list

This will ensure that no two consecutive items on your output list are the same, and that the items in it are in order, which is what you were after.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...