struct Point
{
int x;
int y;
};
int comp(const void *a, const void *b)
{
return -1; //return 1没问题。//我觉得是在交换的时候出问题了。
}
int main()
{
Point *point = new Point[n];
for(int i=0; i<n; i++)
{
cin>>point[i].x>>point[i].y;
}
qsort(point, sizeof(Point), n, comp);
for(int i=0; i<n; i++)
{
cout<<point[i].x<<" "<<point[i].y<<endl;
}
}
始终返回-1,让第一个始终小于第二个啊。为什么输出不正确。qsort(),底层是用什么排序算法。更改的是数组元素的地址,始终返回-1应该至少会有结果啊。
追答始终返回-1, 会有结果, 结果仍然是没有排序的. 因为第一个和第二个数的大小是不确定的.
comp是决定排序的策略.
qsort底层是"快速排序算法", 每次选定一个中间值, 把大于该值的数放在左边,小于该值的数放在右边,这样经过有限次遍数后,达到有序。
这里的大于指的 是comp判定为1的。
返回的结果是内存地址,那些数据都没了。我的是vs2010。
本回答被提问者采纳