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

您可以按O(n)摊销的复杂度对n个整数进行排序吗?

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

您可以按O(n)摊销的复杂度对n个整数进行排序吗?

Intertube上处理基于比较的排序的任何页面都将告诉您,排序
不能

O(n lgn)
使用比较排序快。也就是说,如果您的排序算法通过将2个元素彼此进行比较来确定顺序,那么您做得更好。示例包括快速排序,气泡排序,合并排序。

一些算法(例如计数排序或存储桶排序或基数排序)不使用比较。相反,它们依赖于数据本身的属性,例如数据中值的范围或数据值的大小。

这些算法 可能 具有更快的复杂度。这是一个示例方案:

您正在对

10^6
整数进行排序,并且每个整数都在
0
和之间
10
。然后,您可以只计算零,一,二等的数量,然后按排序顺序将其吐出。这就是countsort的工作原理,
O(n+ m)
m
您的基准可以采用的值数量(在这种情况下为
m=11
)在哪里。

另一个:

您正在对

10^6
所有最多为
5
字符的二进制字符串进行排序。您可以为此使用基数排序:首先根据它们的第一个字符将它们分成2个存储桶,然后对第二个字符(第三,第四和第五个)进行基数排序。只要每个步骤都是稳定的排序,您就应该在中得到一个排序完美的列表
O(nm)
,其中m是数据中位数或位数(在这种情况下为
m=5
)。

但是在一般情况下,排序速度不能比

O(n lg n)
可靠排序(使用比较排序)快。



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

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

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