【发布时间】:2011-11-14 07:03:01
【问题描述】:
如果我有这样的数组:
2, 4, 6, 0, 0, 0, 0, 0, 0- 有没有一种方法可以使用 qsort,只对前 3 个元素进行排序,而其余的元素保持不变?
-
qsort(arrNumbers, 3, sizeof(int), compare)会做这项工作吗? - 是否指定小于整个数组的元素数量只会导致该数量的元素被排序?
编辑: 我的比较功能是:
int comp(const int * a, const int * b)
if(a==b)
{
return 0;
}
else
{
if(a<b)
{
return -1;
}
else
{
return 1;
}
}
看起来对吗?
【问题讨论】:
-
这是一个新颖的想法:把它放在一个 C 程序中,看看会发生什么!
-
the manpage 说什么?
-
你试过了吗?它应该可以工作,而且不难尝试。
-
致经验主义者:问题在于,如果考虑到可能的 UB,尝试并不能证明任何事情。任何“证据”都可能是巧合。我会说标准文档更强大
-
仅仅尝试是不够的。它表明也许它是按设计工作的,也许有未定义的行为在任何地方巧合地导致程序输出预期的答案,也许还有其他东西。所以了解背景是很好的,尤其是在使用 C 或 C++ 时。