30
如何有效地将袜子配对?
昨天我从干净的洗衣店里给袜子配对,发现我做这件事的方式不是很有效。我一直在天真地搜寻-挑选一只袜子,然后“反复”寻找那双袜子。这需要遍历的n / 2 * N / 4 = N 2平均/ 8的袜子。 作为计算机科学家,我在想我能做什么?当然会想到进行排序(根据大小/颜色/ ...)以实现O(NlogN)解决方案。 不能选择散列或其他非现场解决方案,因为我无法复制袜子(尽管如果可以的话,可能会很好)。 因此,问题基本上是: 给定一堆n袜子,其中包含2n元素(假设每只袜子都具有一对完全匹配的袜子),最好的方法是将它们有效配对并具有对数的额外空间?(我相信我可以记住该信息的数量,如果需要的话。) 我希望能从以下几个方面回答这个问题: 大量袜子的一般理论解决方案。 袜子的实际数量不是很大,我不相信我的配偶和我有超过30对。(而且很容易区分我的袜子和她的袜子;也可以使用吗?) 它等同于元素区分性问题吗?