C语言派寻问题求解答!!!

把一个二维实型数组a按照第0列的元素进行排序(由大到小排序,用冒泡法)例如:a[i][0]大于a[i+1][0],则i行与i+1行所有元素都要进行对换 (c语言解答)

#include

int main()
{
int num[3][2] = {{5,2},{3,1},{2,9}};
int temp;

for(int i = 0;i<3-1; i++)
{
    for(int j = 0;j<3-1-i; j++)
    {
        if(num[j][0]>num[j+1][0])
        {
            for(int k=0; k<2;k++)
            {
                temp = num[j][k];
                num[j][k] = num[j+1][k];
                num[j+1][k] = temp;
            }
        }
    }
}

for(int i = 0; i<3; i++)
{
    for(int j = 0; j<2; j++)    
    {
        printf("%d ",num[i][j]);
    }
    printf("\n");
}
return 0;

}


#include

int main()
{
int num[3][2] = {{5,2},{3,1},{2,9}};
int temp;

for(int i = 0;i<3-1; i++)
{
    for(int j = 0;j<3-1-i; j++)
    {
        if(num[j][0]>num[j+1][0])
        {
            for(int k=0; k<2;k++)
            {
                temp = num[j][k];
                num[j][k] = num[j+1][k];
                num[j+1][k] = temp;
            }
        }
    }
}

for(int i = 0; i<3; i++)
{
    for(int j = 0; j<2; j++)    
    {
        printf("%d ",num[i][j]);
    }
    printf("\n");
}
return 0;

}


 void main() {
  int ar[3][2] = {{5,2},{3,1},{2,9}};
  int temp[2], i, j;
  int len = 3;

  for(i = 0;i<len-1; i++) {
    for(j = i+1;j<len; j++) {
      if(ar[i][0] > ar[j][0]) {
        memcpy(temp, ar[i], sizeof(temp));
        memcpy(ar[i], ar[j], sizeof(temp));
        memcpy(ar[j], temp, sizeof(temp));
      }
    }
  }

  for(i = 0; i<len; i++) {
    printf("[%d, %d]\n", ar[i][0], ar[i][1]);
  }
}

噢,是从大到小排列

 void main() {
  int ar[3][2] = {{5,2},{3,1},{2,9}};
  int temp[2], i, j;
  int len = 3;

  for(i = 0;i<len-1; i++) {
    for(j = i+1;j<len; j++) {
      if(ar[i][0] < ar[j][0]) {
        memcpy(temp, ar[i], sizeof(temp));
        memcpy(ar[i], ar[j], sizeof(temp));
        memcpy(ar[j], temp, sizeof(temp));
      }
    }
  }

  for(i = 0; i<len; i++) {
    printf("[%d, %d]\n", ar[i][0], ar[i][1]);
  }
}