在字符串C的数组上合并排序

时间:2013-10-04 23:10:01

标签: c++ c mergesort

是否可以合并排序字符串数组?例如,如果我在C中有一个字符串数组...

arr[0]="Hello";
arr[1]="cat";
arr[2]="there";
arr[3]="apple";
arr[4]="flower";

排序后的输出应该是......

apple
cat 
flower
hello
there

如果我有两个词,比如"你好"我也不明白我应该怎么做。和#34;地狱?"在任何地方,示例总是用于整数而不是字符串,特别是在C ++中。

1 个答案:

答案 0 :(得分:1)

是的,在您的比较中,对{C}使用strcmp,对C ++使用std::string::compare。两个函数都将比较字符串,并返回一个具有以下含义的整数...

  • <强>&LT; 0 - 不匹配的第一个字符的值在比较字符串中较低,或者所有比较的字符匹配但比较的字符串较短。

  • = 0 - 他们比较等于

  • <强>&GT; 0 - 比较字符串中不匹配的第一个字符的值更大,或者所有比较的字符匹配但比较的字符串更长。

这也将考虑“Hello”vs.“Hell”,随后将在“Hello”之前对“Hell”进行排序。

注意:如果您发现自己像我一样,并且很难记住结果的含义。只需将比较运算符(如上例所示)放在str1str2之间。因此,例如,如果您调用了strcmp(str1, str2),结果是&lt; 0 ,然后查看str1 < str2