【发布时间】:2021-01-20 19:31:30
【问题描述】:
我不知道我问的对不对,但我的意思是:
我有这个纯 C 代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int cmpfunc (const void * a, const void * b) {
return (*(int*)b - *(int*)a);
}
int main (int argc, char const *avrg[]) {
int i;
int *ani, *tira;
srand(time(NULL));
tira = malloc(10*sizeof(int));
ani = malloc(10*sizeof(int));
for (i=0; i<10; i++) {
*(tira+i) = (rand()%10);
*(ani+i) = i + 1;
}
qsort(tira, 10, sizeof(int), cmpfunc);
free(tira);
free(ani);
return 0;
}
如您所见,我正在使用 qsort() 从大到小对“tira”进行排序,而“ani”则没有。
我要做的是使用“tira”的值对“ani”进行排序,例如:
提拉 = (2,7,6,2,...) ani = (1,2,3,4,...)
排序后
提拉 = (7,6,2,2,...) ani = (2,3,1,4,...)
我找到了一些带有数组的解决方案,但我不允许使用它们(它必须是指针)并且我无法将这些解决方案转换为指针。
谁能指出'wink wink'我正确的方向? (抱歉开了个玩笑XD)
【问题讨论】:
-
如果您想在排序过程中将这些值保持在一起,请将它们放在同一个
struct中并为此保留内存。然后您可以使用成员tira或成员ani对它们进行排序(如果它们相同)。