【发布时间】:2016-09-04 08:53:36
【问题描述】:
我正在使用 qsort 对整数数组进行排序。但是 qsort 没有对数组进行任何更改。我的比较函数如下:
int mycomp(const void *a, const void *b){
int *a1 = (int*)a;
int *b1 = (int*)b;
if ( a1 < b1 )
return -1;
else if ( a1 == b1 )
return 0;
else
return 1;
}
数组包含:
pos[M] = {40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 5, 10, 15, 20, 15, 30, 35};
我将 qsort 称为:
qsort(pos, M, sizeof(int), mycomp);
输出是完全相同的数组。谁能帮帮我?
【问题讨论】:
-
您将其标记为
C++、C++14等,那么您为什么在C++ 程序中使用qsort? 不要在 C++ 程序中使用 qsort -- 而是使用std::sort。就这么简单。std::sort(std::begin(pos), std::end(pos)); -
调试器是解决此类问题的正确工具。 在询问 Stack Overflow 之前,您应该逐行浏览您的代码。如需更多帮助,请阅读How to debug small programs (by Eric Lippert)。至少,您应该 [编辑] 您的问题,以包含一个重现您的问题的 Minimal, Complete, and Verifiable 示例,以及您在调试器中所做的观察。