Другие языки программирования и технологии

Необходимо упорядочить строки двумерного массива, по возрастанию первого эл-та. СИ.

Сформирован массив по определённому правилу, необходимо упорядочить его строки по возрастанию первого эл-та строки. Сделал код, но он не работает, не могу разобраться почему. Язык чистый СИ. А - двумерный массив, m - длина массива. Массив квадратный. Пытался сделать своеобразным методом пузырька. Заранее спасибо.
for (int j=1; j<m-1; j++) {
for (int i=0; i<m-j; i++) {
if (A[i][0]<A[i+1][0]) {
for (int k=0; k<m; k++) {
b=A[i][k];
A[i][k]=A[i+1][k];
A[i+1][k]=b;
}
}
}
}
#include <stdio.h>
#include <stdbool.h>
#define RANK 3
void swap_line(int* va, int* vb);
void swap(int* a, int* b);
void show(int* vector);
void print(int matrix[][RANK]);
void bubble(int matrix[][RANK]);
int main(void) {
int matrix[RANK][RANK] = { { 5, 3, 6 }, { 1, 8, 2 }, { 4, 1, 9 } };
printf("\n Before:\n\n");
print(matrix);
bubble(matrix);
printf("\n After:\n\n");
print(matrix);
getchar();
}
void swap_line(int* va, int* vb) {
int i;
for (i = 0; i < RANK; ++i) swap(&va[i], &vb[i]);
}
void swap(int* a, int* b) {
int tmp = *a;
*a = *b;
*b = tmp;
}
void show(int* vector) {
int i;
for (i = 0; i < RANK; ++i) printf(" %i ", vector[i]);
}
void print(int matrix[][RANK]) {
int i;
for (i = 0; i < RANK; ++i, printf("\n")) show(matrix[i]);
}
void bubble(int matrix[][RANK]) {
int vector[RANK];
int i, j;
_Bool swapped;
for (i = 0; i < RANK; ++i) vector[i] = matrix[i][0];
for (i = 0; i < RANK - 1; ++i) {
swapped = false;
for (j = 0; j < RANK - i - 1; ++j) {
if (vector[j] > vector[j + 1]) {
swap_line(matrix[j], matrix[j + 1]);
swap(&vector[j], &vector[j + 1]);
swapped = true;
}
}
if (!swapped) break;
}
}
NS
Nursultan Seleubaev
64 742
Лучший ответ
Мамке своей скажи, чтобы мне бабло перечислила и тогда я сделаю задание для её тупого выродка.
Юра Савенко
Юра Савенко
9 512
Никита Ульянов Ахаха)
Спасибо, но если здесь и есть выродок, то это ты)
И да, надеюсь если тебе понадобиться помощь, то вокруг будут такие-же отзывчивые люди, как и ты)
Функцию сортировки напиши как отдельную функцию, на вход подавай адрес массива (его имя) и индексы начальный и конечный. Вот примерный псевдокод.
#define row 5
#define col 5
int array[row*col] = {25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
void bubble_sort(int* array,unsigned begin_index,unsigned end_index);//Объявление функции

int main()
{
for (unsigned x = 0; x < row;++x)
bubble_sort(array,x*row,(x+1)*col);
return 0;
}
ЮР
Юра Руднев
8 452