作者achicn3 (Sher)
看板C_and_CPP
标题[问题] qsort
时间Sun Dec 9 15:11:39 2018
开发平台(Platform): (Ex: Win10, Linux, ...)
Win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
Dev c
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
要针对特定的row或col排序 结果有些数字被改成0
喂入的资料(Input):
一个txt档 内含100个double 元素
已在code中存成10*10的arr
预期的正确结果(Expected Output):
针对特定的row或 col做排序
错误结果(Wrong Output):
https://i.imgur.com/p63WQXu.jpg
红色框起来处 不知为何变成0
虽然是有达到针对特定的row/col排序 可是部分数字被改成0
如果将3-5行注解掉 只针对row做排序是没问题的
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
printf("-----Before sort-----\n");
print(arr);
printf("-----After sort 7th column-----\n");
qsort(&arr[0][7],10,sizeof (arr[0]),cmp);
print(arr);
printf("-----After sort 3rd row------\n");
qsort((void*)&arr[3][0],10,sizeof (double),cmp);
print(arr);
int cmp( const void *a , const void *b ){
return *(double *)a > *(double *)b ? 1 : -1;
}
补充说明(Supplement):
我有尝试着修改第四行qsort中的sizeof (arr[0]) 改成 sizeof(double) 但是就无法对c
olumn 排序
问题应该是出在这个地方 该如何修改比较好? 感谢各位
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 27.52.173.41
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1544339502.A.6E6.html
※ 编辑: achicn3 (27.52.173.41), 12/09/2018 15:16:19
1F:→ loveme00835: qsort() 只能作用在连续记忆体上, 你的相同 col 元素12/09 15:44
2F:→ loveme00835: 不连续所以无法用12/09 15:44
原来如此 感谢~
※ 编辑: achicn3 (27.52.173.41), 12/09/2018 16:45:58