3
用于交织数组的就地算法
给你一个元素的数组2 n2ñ2n 一种1个,一2,... ,一ñ,b1个,b2,… bñ一种1个,一种2,…,一种ñ,b1个,b2,…bña_1, a_2, \dots, a_n, b_1, b_2, \dots b_n 任务是使用就地算法对数组进行交织,以使生成的数组看起来像 b1个,一1个,b2,一2,… ,bñ,一ñb1个,一种1个,b2,一种2,…,bñ,一种ñb_1, a_1, b_2, a_2, \dots , b_n, a_n 如果就地需求不存在,我们可以轻松地创建一个新数组并复制给出O(n )的元素O(n)Ø(ñ)\mathcal{O}(n)时间算法的。 根据就地需求,分而治之算法将算法提高为θ (Ñ 登录n )θ(ñ日志ñ)\theta(n \log n)。 所以问题是: 是否有一个时间算法,它也就位?O(n)Ø(ñ)\mathcal{O}(n) (注意:您可以假设使用统一成本的WORD RAM模型,因此就地转换为空间限制)。O(1)Ø(1个)\mathcal{O}(1)