作者andy5343927 (小安)
看板C_and_CPP
标题[问题] qsort实作在二维阵列遇到的问题
时间Fri Apr 24 10:09:20 2020
Win7
GCC
小弟第一次在本版发文,如有疏失感谢指正^^
自己实作了<stdlib.h>里的qsort,在一维阵列上的运作也正常(拿int阵列测试过了)
但在二维阵列(用char二维阵列测试)上的排序会segmentation fault
Input/Output跟code都在
https://paste.ofcode.org/3b8Rnna9rLskcfDuE4cWLVw
自己有爬过一些本版的文章了
像是
#1CDqVJms,我用一样的方式是可以正常运行<stdlib.h>的qsort的,但我自己的不行
研究过後觉得问题应该是出在我的swap,但是我不知道要怎麽修改,恳请各位解答
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.192.89.236 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1587694166.A.B8A.html
1F:→ andy5343927: 将cmp内容修改後已解决,不确定是否还有错误 04/24 11:29
3F:→ andy5343927: 这是更改後的code 04/24 11:31
4F:→ andy5343927: 但发现这会导致排序错误等问题 04/24 11:43
5F:→ sarafciel: 你排序错误的测资跟输出长怎麽样? 04/24 13:18
6F:推 justhit666: 因为你不能把二维阵列这样直接传进去,上次我来爬文就 04/24 14:43
7F:→ justhit666: 是犯了这个错误XD 04/24 14:43
8F:→ justhit666: C/C++ 语言新手十三诫 -- Ver. 2016 04/24 14:44
10F:→ justhit666: .html 04/24 14:44
11F:→ justhit666: 第十二戒 04/24 14:45
12F:推 justhit666: 欸我不确定,可能是我太敏感了,再看一下,先不要理我 04/24 14:46
13F:→ justhit666: 我菜鸡><! 04/24 14:47
14F:推 justhit666: 喔,看起来好像没讲错? 04/24 14:55
15F:→ andy5343927: 好像是 我後来想到我有犯这个错 不过我先整理一下Y 04/24 15:24
16F:→ andy5343927: 这里对void*做加法一次是加一个byte的量没错吧? 04/24 17:40
17F:→ Lipraxde: void pointer 不能拿来做运算吧@@ 04/24 18:30
18F:→ loveme00835: 你需要先厘清 value/reference semantics, 只要 cmp 04/24 19:38
19F:→ loveme00835: 还有 swap 匹配好其余实作没什麽差 04/24 19:38