gpt4 book ai didi

c - C中二维数组的排序

转载 作者:行者123 更新时间:2023-12-04 05:23:43 26 4
gpt4 key购买 nike

我是 c 的初学者。对二维数组有点困惑,这在 python 中很容易。假设我声明了一个数组 [100][2] 并读取它们的读数。然后我只想通过一维对元素进行排序。如果我不能说清楚,这里是在 python 中完美运行的代码(这个逻辑)。但是在 c 中,它在排序时出错。

int array[100][2],i,j,n=50,temp[1][2];
for(i=0;i<n;i++){
scanf("%d %d",&list[i][0],&list[i][1]);
}
/*heres's the sorting part which gives error*/

for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(list[j][1]>list[i][1]){
temp=list[i];
list[i]=list[j];
list[j]=temp;
}
}
}

那么C中的正确方法应该是什么?如果你不明白我的问题,请评论!

最佳答案

除了用于交换二元素数组的部分之外,您的代码很干净。有两种方法可以修复它:

  • 使用数组的另一种表示 - int *array[100]在这种情况下,您需要mallocfree单个元素,或
  • 使用 memcpy在交换代码中交换二元素数组。
  • 只需交换两个元素,您就可以一次交换一个整数的二元素数组,而无需使用 memcpy

  • 这是一种方法:
    int temp[2];
    memcpy(temp, list[i], sizeof(temp));
    memcpy(list[i], list[j], sizeof(temp));
    memcpy(list[j], temp, sizeof(temp));

    关于c - C中二维数组的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13440314/

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