主题:把10个字符串按ASCII排序
凌晨一点
[专家分:0] 发布于 2011-08-26 14:54:00
我不要代码,只想要解题思路。
我自己想的是用strcmp函数比较两个字符串,把低位的字符串地址保存在中立变量里,然后用中立变量去和下一个字符串比较,因为10字符串都保存在一个二维数组里。一直比较到数组的最后一元素,这样能保证所得到的是10字符串中排位最低的那个字符串,然后重复,一直比较完10个字符串,这个的解题思路是否有错?
求指点,先谢谢了,感激不尽啊。
回复列表 (共2个回复)
沙发
bruceteen [专家分:42660] 发布于 2011-08-27 08:21:00
"因为10字符串都保存在一个二维数组里"
--- 是不是类似于 char ss[10][256] = { "ab", "AB", "3", "234", "qr", "xx", "dfasfas", "xe", "qq", "fxxx" }; ?
如果是:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int __cdecl compare( const void* a, const void* b )
{
return strcmp( (const char*)a, (const char*)b );
}
int main()
{
char ss[10][256] = { "ab", "AB", "3", "234", "qr", "xx", "dfasfas", "xe", "qq", "fxxx" };
qsort( ss, sizeof(ss)/sizeof(ss[0]), sizeof(ss[0]), &compare );
for( int i=0; i<sizeof(ss)/sizeof(ss[0]); ++i )
printf( "%s\n", ss[i] );
return 0;
}
板凳
eastcowboy [专家分:25370] 发布于 2011-08-28 00:30:00
提供另外一种做法,由bruceteen@1楼的代码修改而来
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int __cdecl compare( const void* a, const void* b )
{
return strcmp( *(const char**)a, *(const char**)b );
}
int main()
{
const char *ss[] = { "ab", "AB", "3", "234", "qr", "xx", "dfasfas", "xe", "qq", "fxxx" };
qsort( ss, sizeof(ss)/sizeof(ss[0]), sizeof(ss[0]), &compare );
for( int i=0; i<sizeof(ss)/sizeof(ss[0]); ++i )
printf( "%s\n", ss[i] );
return 0;
}
我来回复