Сортировка строк двумерного массива по сумме элементов в си
Мне очень стыдно за данный код, тем более он даже не работает, улучшите код ниже (оптимально) или выберете другой метод сортировки, пожалуйста =)
#include <stdio.h>
#include <stdlib.h>
int rows;
int cols;
int i;
int j;
int S;
int k;
int tmp;
int max;
int c;
int main() {
int **array;
printf("rows=");
scanf("%d", &rows);
printf("cols=");
scanf("%d", &cols);
array=(int**)malloc(sizeof(int*) * rows * cols);
for (i = 0; i < rows; i++)
{
array[i] = (int*)malloc(sizeof(int) * cols);
for (j = 0; j < cols; j++)
{
array[i][j] = rand() % 100;
printf("%4d", array[i][j]);
}
printf("\n");
}
max = 0;
for (i = 0; i < rows; i++) {
S=0;
for (j = 0; j < cols; j++) {
S= S + array[i][j];
}
if (S>max){
max=S;
}
}
int key[max];
for (i = 0; i < rows; i++) {
S=0;
for (j = 0; j < cols; j++) {
S= S + array[i][j];
}
key[S]=i;
}
for (k = 0; k < max; k++) {
if (key[k] != 0) {
c = key[i];
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
tmp = array[i][j];
array[i][j] = array[c][j];4
array[c][j] = tmp;
}
}
}
}
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
printf("%4d", array[i][j]);
}
printf("\n");
}
for (i = 0; i < rows; i++)
{
free(array[i]);
}
free(array);
return 0;
}