【发布时间】:2012-02-25 04:46:36
【问题描述】:
我有这个结构:
typedef struct {
char *str;
...
} nameType;
我新建了一个指针实例,初始化了里面的str指针(这些都已经做对了,我可以用printfs来检查一下)。
nameType *names;
names = malloc( 10 * sizeof( nameType ) );
for ( i = 0; i < 10; i++ ) {
...
names[ i ].str = malloc( ... );
...
}
然后我想使用冒泡排序对其进行排序,但我无法做到这一点。注意到我设法使用 qsort 做到了,但经过几天的调试、测试、谷歌搜索等,我仍然找不到它。排序代码:
for ( i = 0; i < n - 1; i++ ) {
for ( j = n - 1; j > i; j-- ) {
if ( strcmp( names[ i ].str, names[ j ].str ) > 0 ) {
nameType *tmp;
tmp = names[ i ];
names[ i ] = names[ j ];
names[ j ] = tmp;
}
}
}
(上面的代码只是我正在做的排序的一个例子——我已经尝试了这么多变种,我的想法会大吃一惊。)
【问题讨论】:
-
您问的是冒泡排序还是这段代码的问题?
-
您遇到了什么麻烦?您使用的执行排序的代码是什么?
-
对不起,我忘记添加排序代码了。我的排序有问题,其他一切正常,我已经检查过了。
-
只是一个观察(可能无关紧要),
j不应该从n-1开始而不是n? -
@another.anon.coward 帖子中的错字,已修复。
标签: c arrays sorting pointers struct