【发布时间】:2013-11-09 16:37:43
【问题描述】:
有一个大小为n的集合A和集合B,对于集合A中的每张卡片,在集合B中都有对应的卡片。
描述一种更有效的算法,其平均案例复杂度为 O(nlogn) 测试以找到匹配对。证明您的算法满足所需的复杂性。
我想我可以只使用快速排序对每个集合进行排序,即 nlogn + nlogn,然后我会知道每个集合中的相应位置是匹配对。这是正确的吗?这是整个问题
每组由n张卡片组成,对于A组中的每张卡片,在B组中都有一张对应的卡片属于同一个帐户,我们将这两张卡片称为匹配对。每张卡都是一个小塑料物体,里面有一个磁条,上面有一些加密数字,对应于银行中的一个唯一账户。需要找到所有匹配的对。有一种读卡机,当两张卡(一张来自 A 组,一张来自 B 组)插入机器时,其三个指示灯中的一个会亮起;如果配对匹配,则为绿色,如果 A 上的帐号大于 B,则为红色,如果 B 上的数字大于 A,则为黄色。但是,读卡器无法比较属于同一组的两张卡。
【问题讨论】:
-
匹配是什么意思?他们平等吗?那么经过排序后,集合A应该正好等于集合B。
-
However, the card reader cannot compare two cards belonging to the same set.表示您不能快速排序。 -
您无法对集合进行排序,因为它说读卡器无法比较属于同一集合的两张卡片。
-
三个指示灯也应该代表
<==和>? -
@AbhishekBansal 我不确定这是否那么容易,可能他的意思是它们具有不同的值,但它们匹配以解锁帐户。对提出的问题进行编辑。
标签: algorithm sorting complexity-theory