对给定值进行排序的最佳算法

时间:2012-04-09 20:20:20

标签: c algorithm sorting

假设我有以下值: -

xyz12@abc
xyz1@abc
xyz15@abc
xyz2@abc
xyz22@abc

我希望排序的输出格式为: -

xyz1@abc
xyz2@abc
xyz12@abc
xyz15@abc
xyz22@abc

如果我使用strcmp,那么它将按每个字符进行比较,并给出xyz1 @> xyz12为@> 2我不想要的。我可以使用哪些不同的算法以所需格式对其进行排序?

4 个答案:

答案 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)。