C 如何通过保持其他单元格的值不变来获取2D数组的一个单元格中的值,然后如何应用Qsort?

C 如何通过保持其他单元格的值不变来获取2D数组的一个单元格中的值,然后如何应用Qsort?,c,arrays,multidimensional-array,qsort,C,Arrays,Multidimensional Array,Qsort,我有两个阵列: arr[] = {1,2,3,4,5,6}; arr1[] = {16,13,11,18,19,10}; 我希望将这两个数组存储在2D数组中,使2D数组看起来像: A[6][2] = {{1,16},{2,13},{3,11},{4,18},{5,19},{6,10}}; A[6][2] = {{6,10},{3,11},{2,13},{1,16},{4,18},{5,19}}; 然后我希望对列的值执行qsort,这样现在数组看起来像: A[6][2] = {{1,16

我有两个阵列:

arr[] = {1,2,3,4,5,6};  
arr1[] = {16,13,11,18,19,10};
我希望将这两个数组存储在2D数组中,使2D数组看起来像:

A[6][2] = {{1,16},{2,13},{3,11},{4,18},{5,19},{6,10}};
A[6][2] = {{6,10},{3,11},{2,13},{1,16},{4,18},{5,19}};
然后我希望对列的值执行qsort,这样现在数组看起来像:

A[6][2] = {{1,16},{2,13},{3,11},{4,18},{5,19},{6,10}};
A[6][2] = {{6,10},{3,11},{2,13},{1,16},{4,18},{5,19}};
我试了很多,但都失败了。所以请帮我解决这个问题。
我是C语言的初学者,所以如果我的问题是蹩脚的,请不要介意。

示例

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

typedef int (*pair)[2];

pair zip(int n, int a1[n], int a2[n]){
    pair p = malloc(n * sizeof(*p));
    for(int i = 0; i < n ; ++i){
        p[i][0] = a1[i];
        p[i][1] = a2[i];
    }
    return p;
}

int cmp(const void *a, const void *b){
    pair x = (pair)a;
    pair y = (pair)b;
    return x[0][1] < y[0][1] ? -1 : x[0][1] > y[0][1];
}

int main(void){
    int arr[] = {1,2,3,4,5,6};
    int arr1[] = {16,13,11,18,19,10};
    int size = sizeof(arr)/sizeof(*arr);
    pair A = zip(size, arr, arr1);

    for(int i = 0;i<size;++i){
        printf("{");
        printf("{%d, %d}", A[i][0], A[i][1]);
        if(i!=size-1)
            printf(",");
        else
            printf("}\n");
    }
    qsort(A, size, sizeof(*A), cmp);
    for(int i = 0;i<size;++i){
        printf("{");
        printf("{%d, %d}", A[i][0], A[i][1]);
        if(i!=size-1)
            printf(",");
        else
            printf("}\n");
    }
    return 0;
}
#包括
#包括
typedef int(*对)[2];
成对拉链(整数n,整数a1[n],整数a2[n]){
对p=malloc(n*sizeof(*p));
对于(int i=0;iy[0][1];
}
内部主(空){
int arr[]={1,2,3,4,5,6};
int arr1[]={16,13,11,18,19,10};
int size=sizeof(arr)/sizeof(*arr);
A对=拉链(尺寸、arr、arr1);
对于(int i=0;i样本

#包括
#包括
typedef int(*对)[2];
成对拉链(整数n,整数a1[n],整数a2[n]){
对p=malloc(n*sizeof(*p));
对于(int i=0;iy[0][1];
}
内部主(空){
int arr[]={1,2,3,4,5,6};
int arr1[]={16,13,11,18,19,10};
int size=sizeof(arr)/sizeof(*arr);
A对=拉链(尺寸、arr、arr1);
对于(int i=0;i样本

#包括
#包括
typedef int(*对)[2];
成对拉链(整数n,整数a1[n],整数a2[n]){
对p=malloc(n*sizeof(*p));
对于(int i=0;iy[0][1];
}
内部主(空){
int arr[]={1,2,3,4,5,6};
int arr1[]={16,13,11,18,19,10};
int size=sizeof(arr)/sizeof(*arr);
A对=拉链(尺寸、arr、arr1);
对于(int i=0;i样本

#包括
#包括
typedef int(*对)[2];
成对拉链(整数n,整数a1[n],整数a2[n]){
对p=malloc(n*sizeof(*p));
对于(int i=0;iy[0][1];
}
内部主(空){
int arr[]={1,2,3,4,5,6};
int arr1[]={16,13,11,18,19,10};
int size=sizeof(arr)/sizeof(*arr);
A对=拉链(尺寸、arr、arr1);

对于(int i=0;i将代码放置到目前为止,以便其他人可以帮助您修复。您希望如何对2D数组进行排序?仅使用第一个元素,如果两个元素相同,请查看第二个元素?根据第二个元素,查看排序数组10、11、13、16、18、19中的序列。将代码放置到目前为止,以便其他人可以帮助您修复。您希望如何对2D数组进行排序?仅使用第一个元素,如果两个元素在第二个元素上的外观相同?基于第二个元素,查看排序数组10、11、13、16、18、19中的序列。将代码发布到目前为止,以便其他人可以帮助您解决此问题。如何对2D数组进行排序?仅使用第一个元素,如果第二个元素上的外观相同,则查看排序数组10,11,13,16,18,19中的序列。将您的代码发布到目前为止,以便其他人可以帮助您修复。您希望如何对2D数组进行排序?仅使用第一个元素,如果两个元素相同,则查看第二个元素。根据第二个元素,查看排序数组10,11,13,16,18,19中的序列。。