问题标签 [lexicographic]

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.

0 投票
6 回答
10341 浏览

c++ - 运算符<比较多个字段

我有以下 operator< 应该首先按一个值排序,然后按另一个值排序:

我觉得这是不正确的,如果不对成员变量进行第三次比较测试,您将无法做到这一点,但我找不到任何这不起作用的示例。那么这真的会像预期的那样排序吗?谢谢

编辑:我会将其编码为:

有什么区别吗?我问是因为我知道我的经验是正确的,但也比第一个长

0 投票
5 回答
32129 浏览

c++ - std::next_permutation 实现说明

我很好奇是如何std:next_permutation实现的,所以我提取了gnu libstdc++ 4.7版本并清理了标识符和格式以生成以下演示......

输出如预期:http: //ideone.com/4nZdx

我的问题是:它是如何工作的?和的含义是i什么?它们在执行的不同部分有什么价值?证明其正确性的草图是什么?jk

很明显,在进入主循环之前,它只检查琐碎的 0 或 1 元素列表案例。在主循环的入口处,我指向最后一个元素(不是一个过去的结尾),并且列表至少有 2 个元素长。

主循环的主体中发生了什么?

0 投票
3 回答
1160 浏览

c - 如何计算 .txt 文件中有多少字?在 C 中

这是我第一次发布问题。所以我正在做一个家庭作业计划,有点卡在一些事情上,我希望有人能插话并帮助我。这是我需要在程序中做的事情:

  • 你的程序必须读入一个包含带有标点符号的句子的文件。
  • 它将句子解析为单词和标点符号。
  • 单词将被输入字典,标点符号将被输入列表。将单词添加到字典时忽略大小写。请记住,字典是按字典顺序保存的。
  • 字典和列表中的每个条目都会计算单词或标点符号在原始文本中出现的次数。
  • 阅读文本后(第一个字符为 $ 的行终止文本),打印出字典并列出计数。
  • 您的程序接下来将读取如下格式的行:word1 < word2
  • 这意味着将文本中的 word1 替换为 word2

我已经能够输入文件(hw5-input)并按字典顺序打印并摆脱了大写字母,我什至有一个字数但无法让它在带有字数的单独行上打印..我仍然还需要交换单词并再次打印出文件,但是使用字数打印是我真正需要帮助的。这是我到目前为止所拥有的:

输入文件(hw5-input)是:

我需要它在下一行按字母顺序打印,如下所示:

0 投票
4 回答
3891 浏览

algorithm - 按字典顺序生成排列与排序?

我有点困惑。以字典顺序生成排列的问题与排序问题有何不同?有人可以用一个例子向我解释吗?谢谢

0 投票
2 回答
7457 浏览

java - Java String.getBytes("UTF-8") 是否保留词典顺序?

如果我有一个 Java Strings 的字典排序列表[s1,s2,s3,s4, ...., sn],然后使用 UTF-8 编码将每个 String 转换为一个字节数组,那么字节数组bx = sx.getBytes("UTF-8")列表是否[b1,b2,b3,...bn]也是字典排序的?

0 投票
2 回答
2370 浏览

c# - 使用 C# 的数组算法的字典排序数组

我知道我在处理 vb6 之前已经问过这种问题,而且它太慢了,所以我决定使用 C# 来完成这项工作;现在相同的代码以两倍的速度运行,但仍然太慢了。

它慢的原因是它从每列的末尾开始按字典顺序排序,检查所有行。

我相信会加快这一进程的是,如果我从第一列开始排序过程,检查所有行并按该列的第一个字节检测最低行,并可能检测具有相同第一个低字节的多行并将它们分组以进行下一步它检查第二个(下一个)列,如果它们都相同,则检查第二个字节中的哪个是最低字节,等等。如果它检测到下一行字节不同的地方,那么列代码就完成了第一个字节并继续寻找第二低的字节..这实际上是我认为这个过程应该如何工作以获得良好的速度提升..但不幸的是我对这种排序技术有很大的困惑,最终使用了有人帮助我的东西.

当前代码通过蛮力排序从最后一列开始工作,它对所有行进行排序。然后将一列向左移动并重新对每一行重新排序,直到它到达第一列并对其进行排序。这很慢,因为它没有明显的原因进行迭代。

假设有 256 列和 256 行,总共 65,536 个数组元素.. 使用当前代码并说它必须对每一行进行多次排序,直到每一行得到正确的排序顺序。对于每一列,它可能需要 65,536 次迭代。因此,每次我调用该函数时,总共估计有 256*65536= 16,777,216次迭代,这就是它运行缓慢的实际原因。

我知道这有很多要求,但如果有人有空闲时间并且可能之前已经这样做过可以帮助我,我将不胜感激。

这是到目前为止我必须使用的代码。

0 投票
1 回答
107 浏览

c++ - 从瑞典语到英语的词汇测试

这是我在这里的第一个三分!

此代码用于从瑞典语到英语的词汇表测试。

我有问题(*it).engelska)!为什么我不能(*it).engelska在这段代码中使用?

提前谢谢了!!

0 投票
3 回答
1020 浏览

algorithm - 如何将数字编码为字符串,以使生成的字符串的字典顺序与数字顺序相同

例如。如果我们有两个字符串 2 和 10,如果我们按字典顺序排序,那么 10 会排在第一位。

最简单的方法是重复一个字符 n 次。

但是,有没有更优雅的方法来做到这一点?

0 投票
2 回答
165 浏览

sorting - 实施整理和排序的有效方法?

我正在编写词典学软件,理论上可能需要使用任意(特定于词典项目的)排序规则对数万个字符串进行排序。有两种指定自定义排序规则的方法:

  1. 将字素映射到 unicode 样式的多级排序规则键。
  2. 一个按排序顺序排列的字母字素数组(可能包括二合字母等),可以在内部转换为排序规则的映射。

比较字符串的天真的方法是逐个检查字形,直到找到不匹配,然后查找不匹配字素的排序规则键进行比较,但我希望有一种更有效的方法。

到目前为止,我得到的最好的想法取决于注意到相等长度的字符串可以被视为 little-endian base-n 数字,因此我可以为每个字符串预先计算一个整数键,从而将排序规则转换为廉价的整数比较。但是,这会破坏不同长度的字符串(在对字典进行排序时很重要),并且对可以生成的整数的大小没有限制。为了考虑长度差异,我想我可以计算每个字符串的所有前缀的键列表,然后只比较长度等于被比较的较短字符串的前缀的键。这似乎做得很好,但密钥大小仍然是无限的,存储密钥可能会占用大量内存。

有没有办法改进这种方法?还是我只是完全错误地处理它,并且有一种更好的方法可以使用任意排序规则对字符串进行排序?

0 投票
1 回答
857 浏览

r - 在 merge() 数字中进行排序

我有两个简单的矩阵(或df)要合并:


没问题:在对第一列进行排序后,第一列的输出从 0 到 15 递增:


但是等等:当合并两列时——都是数字——排序顺序突然看起来像字母。

额,恶心。这是怎么回事?我该怎么办?