gpt4 book ai didi

c - 相对于由前两个数组组成的已排序的第三个数组重新排列一对数组

转载 作者:行者123 更新时间:2023-11-30 18:11:01 24 4
gpt4 key购买 nike

假设我有 3 个数组。

arr1 = {96, 100, 104, 108}

arr2 = {8,4,4,16}

现在我创建了第三个数组,我将在其中存储 elements = arr1[i]/arr2[i]

因此arr3 = {12, 25, 26, 9}

现在我想对arr3进行排序。但也以相同的顺序对 arr1arr2 进行排序。

就像现在 arr3 = {9, 12, 25, 26} 我也想按相同的顺序对 arr1arr2 进行排序

arr1 = {108, 96, 100, 104} arr2 = {16, 8, 4, 4}

因此,对于 arr3[2] = 26,我可以打印/使用 arr1[2] = 96 && arr2[2] = 8

我希望能够通过 arr3 访问 arr1arr2 的元素。

最佳答案

不对数组进行排序,而是对索引进行排序

#include <stdio.h>
#include <stdlib.h>

int arr1[] = {96, 100, 104, 108};
int arr2[] = {8, 4, 4, 16};
int arr3[] = {12, 25, 26, 9};

int delta(const void *a, const void *b) {
const int *aa = a;
const int *bb = b;
return arr3[*aa] - arr3[*bb];
}

int main(void) {
int indexes[] = {0, 1, 2, 3};
qsort(indexes, 4, sizeof (int), delta);

printf("arr1:");
for (int k = 0; k < 4; k++) {
printf(" %d", arr1[indexes[k]]);
}
printf("\narr2:");
for (int k = 0; k < 4; k++) {
printf(" %d", arr2[indexes[k]]);
}
printf("\n");
}

对全局变量感到抱歉。

关于c - 相对于由前两个数组组成的已排序的第三个数组重新排列一对数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52720336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com