很多排序算法都是基于数字的比较。如果我理解正确的话,当我们使用字母排序的比较算法时,我们比较字符代码(它们的整数表示)并根据它们的值进行排序。 (这就是为什么在 ASCII
表中字母 B
的代码比 A
大)。但是在这个比较过程中,我们只按第一个字母而不是整个单词排序。当我们将 db query
与 ORDER 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/