设计一个分而治之的算法来找到真实的卡片

时间:2017-10-23 20:33:04

标签: algorithm divide-and-conquer

我正在考虑在一组卡片中找到真实卡片的D& S问题。真实的卡都有相同的代码,假卡有很多代码(可以是相同或不同)。真实卡的数量大于一半。我只能比较两张卡片,看看它们是否有相同的代码,但无法确定代码是什么。

我现在想的是递归地将小组分成小组。然后,我将具有相同代码的卡片放入一组。最后,我只需要找到最大的一组,元素将是真正的卡片。但我真的不知道如何实现它。

1 个答案:

答案 0 :(得分:0)

只需为您的目的修改快速排序。

选择一个随机元素作为一个支点,找到3个更小,相等或更大的桶。如果超过一半是相等的,那么你已经完成了。否则扔掉除了最大的桶之外的所有东西并重复。

平均情况为O(n)。最坏的情况是O(n^2)。如果需要,您可以使用通常用于快速排序的中位数算法中位数来改善最坏情况。