问题标签 [radix]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 如何以C程序的相反顺序打印字符数组
该程序提示用户输入小数和基数,以将该小数转换为已选择的基数。然而,转换是以相反的顺序打印的,我需要它来定期打印。示例:输入:112,然后输入 16,结果是 07 而不是 70。
c++ - 最高有效位基数排序如何比最低有效位基数排序更有效?
我只是在阅读以下问题: 基数排序最重要或最不重要,哪个更快?
接受答案的作者建议 MSD 基数排序确实更快。但是我不明白为什么。
我已经实现了 LSD 和 MSD(基于二进制的移位操作),LSD 是迭代的,只需要一个桶数组,而 MSD 是递归的,每次递归调用都需要一个单独的桶数组。
如果您创建一个包含 1000 万个整数的随机数组,我看不出 MSD 将如何比 LSD 快,因为您每次重新进入函数时都会分配额外的桶数组,而且您将不得不面对递归调用的开销他们自己。
我可以看到 MSD 和 LSD 的组合如何提供全面的提升(对前几位运行 MSD,对其余位运行 LSD 以减少缓存未命中),但是单独的 MSD 如何比 LSD 更有效考虑到它的递归性质以及每次递归调用都需要一个新的桶数组这一事实,这与 LSD 不同,它既是迭代的,而且整个排序过程只需要一个桶数组?
c - Radix Tree C 程序中的总线错误 10
我正在编写一个对 Radix trie 执行操作的程序,但我被困在 add() 函数中,得到总线错误 10。
错误似乎在 while 循环内的某个地方,但我无法弄清楚到底哪里出了问题。请帮忙。
algorithm - 是否需要时间复杂度为 O(n) 的更好的排序算法?
我正在开发一个程序,它只使用一个 for 循环 N 次并对 N 个元素进行排序。只想问,值不值?因为我知道它会起作用,因为它在纸上运行得很好。它还使用比较。我还想知道 Radix Sort 是否有任何缺点。干杯。
algorithm - 基数排序解释
基于这篇基数排序文章http://www.geeksforgeeks.org/radix-sort/我正在努力理解在排序中某些方法的时间复杂度方面所解释的内容。
从链接:
假设输入整数中有 d 个数字。基数排序需要 O(d*(n+b)) 时间,其中 b 是表示数字的基数,例如对于十进制系统,b 是 10。d 的值是多少?如果 k 是最大可能值,则 d 将为 O(log_b(k))。所以整体时间复杂度是 O((n+b)*logb(k))。这看起来比基于比较的大 k 排序算法的时间复杂度要高。让我们首先限制k。令 k≤nc 其中 c 是一个常数。在这种情况下,复杂度变为 O(nlogb(n))。
所以我明白排序需要 O(d*n) 因为有 d 位因此 d 传递,你必须处理所有 n 元素,但我从那里丢失了它。一个简单的解释将非常有帮助。
c - 从字符串的基数树中切割子字符串
我的问题是这样的:我想搜索一棵字符串基数树,每个字符串都有一个唯一的数字,直到找到具有作为函数参数给出的数字的那个。当我递归搜索树时,我需要更新字符串(当我下去时将当前字符串与新字符串连接起来,并在我从重复中返回时切断后缀)。每个树节点都有一个指向其子节点和兄弟节点的指针。该功能如下,由于某种原因它不起作用。
algorithm - 为什么基数排序虽然不是稳定排序但会划分它的元素?
基数排序不被视为一种稳定排序。
但是为什么像任何其他稳定排序一样它分组或划分它的元素?
c - 以任何基数(基数)对整数进行排序
我应该用 C 编写一个算法,该算法采用任何基数(基数)的整数数组,并使用基数排序将它们按升序排列。我的算法不能对数组的长度、位数和基数施加任何限制。当我说整数时,我并不是说我总是会收到一个int
s 数组,它可以是一个long int
s、char
s、char
指针等的数组。
看到这一点,我虽然处理对我的算法施加尽可能少的限制的最佳方法是通过访问向量的位置并将值类型转换到那里来处理向量,long unsigned int
因此这种方法的限制是用户必须使用符合编译代码的编码选项的数字“权重”,即x
十进制基数的 ASCII 编码是 120 和a
97,因此如果给定的基数使用数字x
和a
,则x
必须大于a
。
这是我的算法:
该算法适用于我测试的所有类型,但字符串数组除外。如果我有类似的东西:
结果输出将是:
b36v 未排序:014 000 8f6 080 056 00a 080
b36v 排序:014 000 8f6 080 080 056 00a
所以它没有按预期工作,我希望排序的向量是:
000 00a 014 056 080 080 8f6
我只能看到相等的条目按预期组合在一起。更改值并观察输出我认为该算法可能正在获取内存地址并对它们进行排序,因为在原始向量的给定位置没有实际值,而是一个char
's 数组。
我只是想知道是否有某种方法可以处理这些 2D(甚至 3D、4D、...)数组的情况,编写一个通用代码来处理从int
/数组到数组数组的char
数组......long unsigned int
要求太多参数。我不知道如何在 C 中处理这种情况。
math - 基数表示
我最近开始学习逻辑设计,我有一些我不太了解的东西。
假设您被赋予以秒为单位的某个值(例如 3,000,000),并被要求转换为周、天、小时、分钟和秒(混合基数)。你会如何转换它?我尝试先将值除以 60(秒),使用商 (?) 作为第一个数字,然后将余数再次除以 60(这次是分钟数),依此类推,每个基数(60s、60m、 24 小时、7 天、52 周)。这是你应该如何解决它?
我还想知道如何找到可以用 x 向量(例如 4)和基数(例如 6)表示的最大值。我认为这将是每个向量位置(216、36、6、1)的值的总和,因此是 259。但我认为这是不正确的。
我试过在网上找到任何帮助,但找不到任何能给出简单解释的帮助。
c# - 基础到基础转换
我正在尝试找到一些可以从任何基础转换为任何其他基础的函数。
在Java
中,我使用BigInteger
了它,它允许我在预定义的基数中接收一个数字,如下所示:.nextBigInteger(radix)
然后将其转换为任何其他基数.ToString(radix)
。
我正在尝试在 中做同样的事情C#
,但问题BigInteger
不是旨在获取数字的基数。还有其他方法吗?