algorithm - 哪种算法用于字母排序?

标签 algorithm sorting alphabetical

很多排序算法都是基于数字的比较。如果我理解正确的话,当我们使用字母排序的比较算法时,我们比较字符代码(它们的整数表示)并根据它们的值进行排序。 (这就是为什么在 ASCII 表中字母 B 的代码比 A 大)。但是在这个比较过程中,我们只按第一个字母而不是整个单词排序。当我们将 db queryORDER BY 一起使用时,我们将对整个单词进行排序。 (据我所知,原因是索引等数据库后台机制)。我还听说过 Radix sort(抱歉,但以前从未使用过),据我所知,它可以帮助进行字母排序(也许我错了)。

哪种算法更适合用于按整个单词排序?

不正确:

Adam
Aaron
Antony

正确:

Aaron
Adam
Antony

我对整个工作流程的假设是否正确?

最佳答案

您对“仅比较第一个字母”的假设不太正确。该算法是 - 如果第一个字母相同,则比较下一个字母。和下一个。和下一个。直到您找到一些不同的字母,或者其中一个字符串用完。

另请注意,仅通过 ASCII 码进行比较并不总是足够的。有时您需要进行不区分大小写的比较,您认为 A 等于 a。有时您需要在认为 ā 等于 a 时进行不区分重音的比较。有时您需要考虑疯狂的语言垃圾,其中 ß 等于 ss 或更糟。

我的建议是——您的编程语言应该有一些比较字符串的机制。用那个。不要自己推出。

之后,任何排序算法都会起作用。它们都使用一个简单的假设 - 您可以比较您排序的项目。无论它们是整数、字符串还是复杂对象,都无关紧要。只要您可以拿起任意两个物体并说“这个更大,这个更小”,就可以开始了。

(还要注意,您需要保持一致。如果 A==B 和 B==C,那么您还需要确保 A==C。类似地,如果 A < B 和 B < C,则你必须 A < C. 等)

关于algorithm - 哪种算法用于字母排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20188111/

相关文章:

mysql - 以最接近优先的方式匹配加权标签

algorithm - 为什么 Radix sort 比 C 中的 Quick sort 有更多的指令?

algorithm - 计算数组的所有子集,其中最大数是剩余数的总和

php - 使用 RecursiveDirectoryIterator 对目录列表进行排序

Unix 版本号排序

jQuery 按列表内容日期或字母顺序对列表进行排序

算法及时计算但快速验证计算结果

c++ - 无法使用自定义迭代器排序

java - 对包含数字的字符串数组进行排序

javascript - 如何按字母顺序对 HTML 页面的部分(图像和文本)进行排序