栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

重新排列数组,以便按相同元素分组

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

重新排列数组,以便按相同元素分组

所以答案是否定的。这些信息并没有真正的帮助。它可以使您好一些,但不能让您大吃一惊。

对于建议使用散列以获得线性时间的每个人,您也可以执行相同的排序。此方法称为基数/哈希排序。它会消耗您的内存。

当有更多限制时,您甚至可以使用更酷的技巧(例如,总和,异或等)。

但是,对于仅在广义数组上使用比较的算法,通过这种方式减少问题并不会带来太大的花费。

为了对此提供一个简单的直觉,假设每个元素有1个冗余,因此您的数组为a1,a1,… an,an(n个唯一数字的2n个元素的总数)。

解决方案空间的大小为n!(只要aj-aj是配对的,您就可以按照问题说明中的指定随时对配对进行置换)。输入空间的大小为(2n)!/(2 ^(n))。

这意味着您的算法需要产生足够的信息来排列((2n)!/ n!)/(2 ^ n)=(n (n + 1) … 2n)/(2 ^
n)个元素。每次比较都会为您提供1位信息。所需的比较迭代次数为log(n)+ log(n + 1)… +
log(2n)-n,即big_omega(nlog(n))。这并不比排序更好或更糟。

这是排序的半严格处理方法:http
:
//www.cs.cmu.edu/~avrim/451f11/lectures/lect0913.pdf

我可能会受贿为当前问题生成类似的证明。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/637412.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号