我qsort()在我的程序中使用对数组进行排序,以便我可以bsearch()用来查找某个元素.
我有qsort()正确的数组工作,因为我的数组在排序时没有满,它返回类似于此
在排序之前
a[0] = value,
a[1] = value,
a[2] = NULL,
a[3] = NULL,
排序后
a[0] = NULL,
a[1] = NULL,
a[2] = value,
a[3] = value,
有没有办法在排序之前撤消排序以恢复?
这是qsort()代码
`qsort(a,size_a,sizeof(*value),(int(*)(const void*,const void*)) strcmp);`
Run Code Online (Sandbox Code Playgroud)
用于比较我刚刚使用strcmp的值,因为所有值都是字符串.
不会.有多个原始数组会排序到同一个输出数组.你怎么知道选择哪一个?
如果你想要原版,那么你需要制作一份副本,然后进行排序.(或者,创建一个指向原始元素的指针数组,然后对其进行排序.)