sorting - 要在 O(n) 中排序的 N 个整数?
问题描述
假设您在 (0, n2 ) 范围内有 n 个整数。这些整数都是其他整数的平方根。指示是否可以在 O(n) 中对这些数字进行排序
我假设我们会对每个整数取平方根,但我不确定是否可以在 O(n) 中对它们进行排序,任何帮助将不胜感激
解决方案
是的,如果您愿意使用 O(n) 空间:
- 您已将 N 个整数存储在数组 A 中。
- 分配具有 2n+1 位的位图 B,初始化为零。
- 对于每个整数,设置 B[A[i]] = 1
- 创建一个空列表:
- 按顺序迭代 B,以便如果 B[i] == 1 则将 i 添加到列表中。
它可以在 O(2n) == O(n) 的时间内完成。
推荐阅读
- git - 是否可以从 git 对象中删除文件?
- git - Git + libsecret 抛出“没有 X11 $DISPLAY 无法自动启动 D-Bus”
- android - 媒体编解码器 - YUV_YV12 到 YUV420SP/NV21
- python - 如何与其他用户共享我的 Tkinter 应用程序?
- vba - VBA Powerpoint - 文本框 - 将 WordWrap 转换为回车
- gradle - 在自定义 gradle 插件中,如何添加任务取决于其他插件中定义的任务?
- java - Java 7 支持的 JavaFx 应用程序未在 Mojave 上运行
- javascript - 排名扑克手
- postgresql - Hive 创建数据库,无法实例化 org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
- json - 使用颠簸变换从json中提取值