假设有n位女士在一场音乐会上检查外套

时间:2019-03-07 03:35:10

标签: algorithm sorting

我有一个看似困难的算法,必须构造,而且我不确定从哪里开始。在这里:

假设有n位女士在一场音乐会上检查外套。但是,到了深夜, 服务员丢失了索赔支票,并且不知道哪件外套属于谁。 所有的女人都穿着黑大衣,几乎是一样的,但是不同 大小。服务员可以让一个女人试一件外套,找出外套是否合适 (意味着它属于那个女人),或者外套太大,或者外套太小。 但是,服务员无法直接比较两件外套的尺寸,也无法比较 两个女人的大小直接。描述服务员如何确定哪件外套 属于预期O(n log n)时间中的哪个女人。

我已经想到了执行此操作的方法,但是没有一个方法接近O(n log n)时间。 任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:2)

我觉得这最终像是快速排序。

让所有女士试穿一件外套,然后将女士分组为比那件外套小,比那件外套大。那件外套适合的人。

现在,让第一件外套适合的女人试穿其他每件外套,看看它是大还是小。在线性时间内,您现在有两个不同的组,可以递归地执行此过程。

这与快速排序非常相似,其中分区步骤是线性时间,并产生2组以递归方式执行快速排序。使用随机数据透视,可以预期O(nlogn)运行时间。