我想要将一个二维数组按照最后一行从大到小排序。然后我从网上搜到的做法是,因为求二维数组按列排序比较简单,所以我进行了转置,然后再使用qsort做法,但是为什么输出结果不正确,有人可以帮忙看一看吗?
#include <stdio.h>
#include <stdlib.h>
int b_arr[][3] = { {3, 2, 5},
{1, 1, 8},
{6, 2, 9},
{9, 2, 4} };
int cmp2(const void* a, const void* b) // 2D Matrix
{
return ((int *)a)[1] - ((int *)b)[1];
}
int main()
{
printf("Hello world!\n");
int i, j;
// qsort(b_arr, 3, 3 * sizeof(int), cmp2);
int crr[3][4];
for (i = 0; i < 3; i++){
for (j = 0; j < 4; j++){
crr[i][j] = b_arr[j][i];
}
}
printf("Here \n");
for (i = 0; i < 3; i++){
for (j = 0; j < 4; j++){
printf("%d ", crr[i][j]);
}
printf("\n");
}
qsort(crr, 4, 4 * sizeof(int), cmp2);
printf("After sorted: \n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
printf("%d ", crr[i][j]);
}
printf("\n");
}
return 0;
}
