我需要按ASCII码顺序和长度对大约10万个字符串进行排序。我通过将其放入长度为字符串长度的2D向量中,然后使用快速排序算法(按ASCIIbetically)对每个数组进行排序来实现按长度排序。但是,有没有更快的方法可以对相等长度的字符串进行排序?我听说基数排序很好,但我发现它很难理解。如果不使用sort()函数,最好的方法是什么?如果你需要代码,我可以贴出来。
我需要按ASCII码顺序和长度对大约10万个字符串进行排序。我通过将其放入长度为字符串长度的2D向量中,然后使用快速排序算法(按ASCIIbetically)对每个数组进行排序来实现按长度排序。但是,有没有更快的方法可以对相等长度的字符串进行排序?我听说基数排序很好,但我发现它很难理解。如果不使用sort()函数,最好的方法是什么?如果你需要代码,我可以贴出来。
uint64_t u ;
memcpy(&u, pv, 8) ;
...convert to big-endian if required...
我可以告诉你,在x86_64上,使用gcc和-O2编译时,memcpy()
编译成一条指令,就像是u = *(uint64_t*)pv
一样。对于存在对齐问题的处理器,我希望编译器能够做出适当的处理。
遗憾的是,memcmp(foo, bar, 8)
没有得到相同的待遇(至少在gcc 4.8上,即使使用-O3):-(