假设我有以下值: -
xyz12@abc
xyz1@abc
xyz15@abc
xyz2@abc
xyz22@abc
我希望排序的输出格式为: -
xyz1@abc
xyz2@abc
xyz12@abc
xyz15@abc
xyz22@abc
如果我使用strcmp,那么它将按每个字符进行比较,并给出xyz1 @> xyz12为@> 2我不想要的。我可以使用哪些不同的算法以所需格式对其进行排序?
答案 0 :(得分:3)
您正在寻找的Google关键字是“自然排序”。
答案 1 :(得分:0)
了解排序实用程序的实现方式:
$ 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
答案 2 :(得分:0)
如果XYZ总是相同,那么在整数值上使用Counting sort。否则,它可能是使用一些基于通用比较的排序和自定义比较器(即Merge sort)的最简单方法。
通用我的意思是使用一些预编程的排序算法,它准备接受一些比较器功能(如果A> B则返回1,如果A
答案 3 :(得分:-1)
我强烈建议您浏览一下这个网站:
http://www.c.happycodings.com/Sorting_Searching/index.html
你在C中有一个排序算法的分支。显然,那些表现更好的人(nlogn)。