假设我有以下值: -
xyz12@abc
xyz1@abc
xyz15@abc
xyz2@abc
xyz22@abc
我希望排序后的输出格式为:-
xyz1@abc
xyz2@abc
xyz12@abc
xyz15@abc
xyz22@abc
如果我使用 strcmp,那么它将按每个字符进行比较,并将 xyz1@ > xyz12 作为我不想要的 @ > 2 给出。我可以使用哪些不同的算法以所需的格式对其进行排序?
您要查找的 Google 关键字是“自然排序”。
看看 sort 实用程序是如何实现的:
$ cat test.txt | sort
xyz12@abc
xyz15@abc
xyz1@abc
xyz22@abc
xyz2@abc
现在使用 -V 开关...
$ cat test.txt | sort -V
xyz1@abc
xyz2@abc
xyz12@abc
xyz15@abc
xyz22@abc
http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/sort.c
我强烈建议你看看这个网站:
http://www.c.happycodings.com/Sorting_Searching/index.html
在 C 语言中有一个排序算法的分支。显然选择那些性能更好的算法(nlogn)。