基数排序算法

2023-12-01

我得到了一些逆向工程算法。下面的算法是基数排序,但我对代码中实际发生的情况感到非常困惑。

我是算法新手,不确定代码如何对数组中的元素进行排序。我不确定哪些位与算法有关以及掩码是什么。这是代码:

    ArrayList<Integer> array = CopyArray(a);
    Integer[] zerobucket = new Integer[a.size()];
    Integer[] onebucket = new Integer[a.size()];
    int i, bit;
    Integer element, mask;

    for (bit=0; bit<8; ++bit) {
        int zc = 0;
        int oc = 0;

        for(i=0; i<array.size(); ++i) {
            element = array.get(i);
            mask = 1 << bit;
            if ((element & mask) == 0) {
                zerobucket[zc++] = array.get(i);
            } else {
                onebucket[oc++] = array.get(i);
            }
        }
        for(i=0; i<oc; ++i) array.set(i,onebucket[i]);
        for(i=0; i<zc; ++i) array.set(i+oc,zerobucket[i]);
    }
    return(array);

学习编程应该从算法开始!

要了解一段未记录的代码的作用,您可能需要采用伪语言将其放入英语数学陈述中。

例如,您注意到此代码片段应该仅适用于 8 位数字(位上的外循环)。粗略的描述是,数组元素被“排序”到两个桶中,具体取决于位置“bit”中的位是零还是一——从租用有效位置中的位开始。然后对原始数组进行重新排序,“一”位于“零”之前......这应该对数组进行从最大到最小的排序。

您最好查找基数排序算法,并从该算法开始,而不是从代码开始。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基数排序算法 的相关文章

  • Kafka - 如何同时使用过滤器和过滤器?

    我有一个 Kafka 流 它从一个主题获取数据 并且需要将该信息过滤到两个不同的主题 KStream
  • 查看Java Agent修改的Java类的源代码

    我需要了解 Java 代理如何修改我的初始类 以便我能够理解代码的作用 build gradle configurations jar archiveName agent2 jar jar manifest attributes Prema
  • 我们可以有条件地声明 spring bean 吗?

    有没有一种方法可以有条件地声明 Spring bean 例如
  • 有人用过 ServiceLoader 和 Guice 一起使用吗?

    我一直想通过我们的应用程序 构建系统进行更大规模的尝试 但更高的优先级不断将其推到次要地位 这似乎是加载 Guice 模块的好方法 并且避免了关于 硬编码配置 的常见抱怨 单个配置属性很少会自行更改 但您几乎总是会有一组配置文件 通常用于不
  • 什么是内部类的合成反向引用

    我正在寻找应用程序中的内存泄漏 我正在使用的探查器告诉我寻找这些类型的引用 但我不知道我在寻找什么 有人可以解释一下吗 Thanks Elliott 您可以对 OUTER 类进行合成反向引用 但不能对内部类实例进行合成 e g class
  • 无法使用 datastax java 驱动程序通过 UDT 密钥从 cassandra 检索

    我正在尝试使用用户定义的类型作为分区键将对象存储在 cassandra 中 我正在使用 datastax java 驱动程序进行对象映射 虽然我能够插入到数据库中 但无法检索该对象 如果我更改分区键以使用非 udt 例如文本 我就能够保存和
  • 在 C++ 中通过引用传递 std 算法谓词

    我正在尝试从 a 中删除元素std list并保留已删除元素的一些统计信息 为此 我使用列表中的remove if 函数 并且我有一个谓词 我想使用这个谓词来收集统计数据 这是谓词的代码 class TestPredicate privat
  • getCurrentSession 在网络中休眠

    我正在使用 hibernate 和 jsp servlet 编写一个基于 Web 的应用程序 我读过有关sessionFactory getCurrentSession and sessionFactory openSession方法 我知
  • ThreeTen 向后移植与 JSR-310 的比较

    由于某些原因 我们现在无法使用 java 8 我们仍然停留在 java 7 上 不过 我想使用新的JSR 310 date time APIs现在 使用官方向后移植 ThreeTen http www threeten org threet
  • 为什么在将 String 与 null 进行比较时会出现 NullPointerException?

    我的代码在以下行中出现空指针异常 if stringVariable equals null 在此语句之前 我声明了 stringVariable 并将其设置为数据库字段 在这个声明中 我试图检测该字段是否有null值 但不幸的是它坏了 有
  • 2^31 次方的 Java 指数错误 [重复]

    这个问题在这里已经有答案了 我正在编写一个java程序来输出2的指数幂 顺便说一句 我不能使用Math pow 但是在 2 31 和 2 32 处我得到了其他东西 另外 我不打算接受负整数 My code class PrintPowers
  • 如何使用双重调度来分析图形基元的交集?

    我正在分析图形基元 矩形 直线 圆形等 的交互并计算重叠 相对方向 合并等 这被引用为双重调度的一个主要示例 例如维基百科 http en wikipedia org wiki Double dispatch 自适应碰撞算法通常要求 不同的
  • 无需构建树即可预测霍夫曼压缩比

    我有一个二进制文件 我知道其中每个符号出现的次数 如果我要使用霍夫曼算法压缩它 我需要预测压缩文件的长度 我只对假设的输出长度感兴趣 而不对单个符号的代码感兴趣 因此构建霍夫曼树似乎是多余的 作为一个例子 我需要得到类似的东西 包含 4 个
  • IntelliJ Idea:将简单的 Java servlet(无 JSP)部署到 Tomcat 7

    我尝试按照教程进行操作here http wiki jetbrains net intellij Creating a simple Web application and deploying it to Tomcat部署 servlet
  • 使用 Proguard 通过 Dropbox.com 库混淆 Android 应用程序

    我刚刚创建了一个需要 Dropbox com API 库的 Android 应用程序 我现在尝试在 发布 模式下构建应用程序 并希望在代码上运行混淆器以对其进行混淆 但是 每当我尝试运行 Proguard 时 都会收到以下错误 Progua
  • 将字符串中的“奇怪”字符转换为罗马字符

    我需要能够将用户输入仅转换为 a z 罗马字符 不区分大小写 所以 我感兴趣的角色只有26个 然而 用户可以输入他们想要的任何 形式 的字符 西班牙语 n 法语 e 和德语 u 都可以包含用户输入中的重音符号 这些重音符号会被程序删除 我已
  • 即使禁用安全性,OAuth 令牌 API 也无法在 Elastic Search 中工作

    我是 Elastic search 新手 使用 Elastic search 版本 7 7 1 我想通过以下方式生成 OAuth 令牌弹性搜索文档 https www elastic co guide en elasticsearch re
  • 用于请求带有临时缓存的远程 Observable 的 RxJava 模式

    用例是这样的 我想暂时缓存最新发出的昂贵的Observable响应 但在它过期后 返回到昂贵的源Observable并再次缓存它 等等 一个非常基本的网络缓存场景 但我真的很难让它工作 private Observable
  • 在 Java 中通过 D-Bus MPRIS 访问 Clementine 实例

    我使用 Clementine 作为音乐播放器 它可以通过 D Bus 命令进行控制 在命令行上 使用 qdbus 我可以 Start Stop 暂停播放器 强制它跳过播放列表中的歌曲 检查播放列表的长度 检查播放列表中当前播放的曲目及其元数
  • 0-1背包算法

    以下 0 1 背包问题是否可解 浮动 正值和 浮动 权重 可以是正数或负数 背包的 浮动 容量 gt 0 我平均有 这是一个相对简单的二进制程序 我建议用蛮力进行修剪 如果任何时候你超过了允许的重量 你不需要尝试其他物品的组合 你可以丢弃整

随机推荐

  • 是否可以有条件地分配@RequestParam中的Required值?

    我的控制器中有 2 个 RequestParam 参数 我想根据条件设置两个参数的必需值 条件可能是这样的 如果传递了一个参数 则必须传递另一个参数 因此将 other 的 required 设置为 true 反之亦然 否则 如果没有传递任
  • 将新文件夹添加到某个位置时触发脚本

    我正在自动化一个流程 并且已经为此制作了一个 powershell 脚本 现在我需要制作一些东西 每次将新文件夹添加到特定位置 即删除新版本 时都会调用该脚本 我应该为此使用什么 WCF 太多了吗 如果没有 有任何线索吗 任何有用的链接 或
  • 使用 CMDeviceMotion 获取绝对旋转?

    我正在使用 Sprite Kit 构建一个简单的游戏 屏幕不会旋转 但我想知道用户握持手机的角度以了解游戏机制 我想要获得的值可以使用加速度计 x y 轻松检索 但我发现这是不可靠的 所以我试图用以下方法存档更好的结果CMDeviceMot
  • vbscript MsgBox() 的 Javascript 等效函数

    我需要将以下函数转换为javascript MsgBox Are you a programmer 0 Please answer 我想我可以用confirm Are you a programmer 但我想知道如何在那里添加按钮顺序 Ja
  • WHM64 升级后无法访问 eximstats sqlite3 db

    WHM 64 升级后 无法访问 eximstat 数据库 MySQL代码更改为PDO来访问sqlite3 db 如下 db new PDO sqlite var cpanel eximstats db sqlite3 DB USER DB
  • 将列添加到文本文件

    我有一个只有一列的数据文件 我想在左侧添加 2 列 在右侧添加 2 列 我认为一个简单的方法是使用 numpy 数组 这是我尝试过的 z np loadtxt data file dat new np zeros z shape 0 5 f
  • 数组元素的减号运算

    我有一个数组 A 11 23 32 44 56 88 55 14 78 79 和 B 44 56 88 55 14 现在使用 VBScript 我可以执行 Set手术MINUS要获得其他输出 例如 C 11 23 32 78 79 数组 A
  • NSDecimalNumber(x).intValue 返回 -2、0、15 和 199,具体取决于 x 中的小数位数 (x = 199.999...5)

    我们在业务逻辑中发现了一个有趣的案例 它完全打破了我们的逻辑 但我们不明白为什么NSDecimalNumber and Decimal表现得像它那样 我的案例游乐场如下 import Foundation let pQuantity Dec
  • 无法启动 kibana-4.1.2

    我的环境 CentOS 6 6 elasticsearch 2 0 0 rc1 rpm kibana 4 1 2 linux x64 root node2 files sestatus SELinux status enabled SELi
  • 如何在android中显示外部图像?

    我想显示外部图像 例如 http abc com image jpg 在我的 Android 手机应用程序中 谁能指导我如何实现这一目标 有很多方法可以实现您的要求 基本上 您必须使用 urlrequest 下载图像 然后使用 InputS
  • Pathways:操作 R 中父子“节点”中的事件列表

    我感兴趣的是根据预先指定的事件列表 例如诊断 手术 治疗1 治疗2 死亡 可视化患者的路径 测试数据集可能如下所示 df lt structure list ID structure c 1L 1L 1L 2L 2L 2L 2L 2L 3L
  • Node.js 模块范式的基础知识?

    我正在努力真正掌握这里的一些基本知识 我觉得这不仅阻碍了我 而且导致了蹩脚的代码 我不喜欢这样 我理解将功能代码块分解为单独模块的概念 例如路由 数据库模型等 但我很难理解如何正确编排所有这些单独模块的相互依赖的功能 让我举几个例子来说明我
  • mysqli_real_escape_string 和双引号问题

    我有这个代码 var mysqli real escape string connection POST var sql UPDATE users SET var var WHERE id id 如果变量是aaa 没关系 即使 var 是a
  • sql-server:我如何知道谁在我的数据库中?

    我有一个访问前端和sql server 后端 我想知道哪些用户当前正在使用该数据库 使用 access 或 sql server 可以做到这一点吗 在 SQL Server 中 您可以运行此存储过程 sp who2 EDIT 如果您想查看在
  • 在 Maven 中调试?

    是否可以从 Maven 启动 jdb 等调试器 我有一个pom xml成功编译项目的文件 但是 该程序挂在某处 我真的很想启动 jdb 或等效的调试器来查看发生了什么 我编译使用mvn compile并使用以下命令启动 mvn exec j
  • 如何使用 sqldf 包提取月份

    我尝试使用 sqldf 包和月份函数获取基于日期分组的视图 但出现错误 Error in sqliteSendQuery con statement bind data error in statement no such function
  • 按依赖于另一列的列进行分组

    这是我试图通过 MySQL 查询彻底解决的问题的简化视图 这不是我正在处理的实际表 如果我有下表 Name Buyer ID John Fred 4 John Smith 3 Fred Sally 2 John Kelly 1 我想要一个查
  • NTFS 连接,难以理解 API

    Update 这个问题有evolved进入一个关于NTFS filesystem filter driver如何在备份应用程序和其他需要了解的程序中使用Win32 API磁盘上的文件到底是什么 路口和重解析点是我需要考虑的关键概念 也是 N
  • MySQL 可以拆分列吗?

    我有一列包含逗号分隔的数据 1 2 3 3 2 1 4 5 6 5 5 5 我正在尝试运行一个搜索来单独查询 CSV 字符串的每个值 0
  • 基数排序算法

    我得到了一些逆向工程算法 下面的算法是基数排序 但我对代码中实际发生的情况感到非常困惑 我是算法新手 不确定代码如何对数组中的元素进行排序 我不确定哪些位与算法有关以及掩码是什么 这是代码 ArrayList