Pau*_*Pau 5 c++ arrays sorting qsort
我的问题是下一个(这是一个显示问题的简单示例):
我有:
int* array1;
double* array2.
array1=new int[10];
array2=new double[10];
array1=filledWithIntegers(random);
array2=filledWithDoubles(random);
Run Code Online (Sandbox Code Playgroud)
//这里我想基于array2值对array1进行排序.我正在尝试使用stdlib的qsort函数.qsort(array1,6,sizeof(int),compare);
关键是如何基于array2为order1生成比较函数.
不可能使用std库数据结构,它必须直接在数组指针中完成.
谢谢.
不是对整数进行array1
排序,而是使用array2[index]
比较项来对其索引进行排序,然后array1
根据从排序中返回的排列进行重新排列.
这是一个快速演示:
#include <stdio.h>
#include <stdlib.h>
int array1[] = {1, 7, 3, 9, 5};
double array2[] = {1.1, 7.7, 3.3, 9.9, 5.5};
int compare (const void * a, const void * b) {
double diff = array2[*(int*)a] - array2[*(int*)b];
return (0 < diff) - (diff < 0);
}
int main(void) {
int perm[5], i;
int res[5];
for (i = 0 ; i != 5 ; i++) {
perm[i] = i;
}
qsort (perm, 5, sizeof(int), compare);
for (i = 0 ; i != 5 ; i++) {
res[i] = array1[perm[i]];
}
for (i = 0 ; i != 5 ; i++) {
printf("%d\n", res[i]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)