Зачем изобретать велосипед? Используйте qsort()
из стандартной библиотеки C, вот так (общий пример для любой матрицы ROWS
x COLS
):
#include <stdio.h> /* printf */
#include <stdlib.h> /* qsort */
#define ROWS 6
#define COLS 2
int cmp(const void* p1, const void* p2)
{
const float* arr1 = (const float*)p1;
const float* arr2 = (const float*)p2;
return (arr2[1] > arr1[1]) - (arr2[1] < arr1[1]);
}
int main(void)
{
float array[ROWS][COLS] = {
{1.0, 10.0},
{2.0, 8.0},
{3.0, 11.0},
{4.0, 12.0},
{5.0, 2.0},
{6.0, 7.0}
};
qsort(array, ROWS, COLS * sizeof(float), cmp);
for(int i = 0 ; i < ROWS; i++)
printf("%f, %f\n", array[i][0], array[i][1]);
return 0;
}
Выход:
4.000000, 12.000000
3.000000, 11.000000
1.000000, 10.000000
2.000000, 8.000000
6.000000, 7.000000
5.000000, 2.000000