求编程冒泡法怎么用啊?

编写函数用冒泡排序法将二维数组a[3][3]中的9个整数分别按照所属各行进行由大到小的排序(二维数组的每一行都可视为一个一维数组)

#include <stdio.h>

void bubbleSort(int arr[], int n) {
    int i, j;
    for (i = 0; i < n - 1; i++) {
        for (j = 0; j < n - i - 1; j++) {
            if (arr[j] < arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

void sortRows(int arr[][3], int n, int m) {
    int i, j;
    for (i = 0; i < n; i++) {
        bubbleSort(arr[i], m);
    }
}

int main() {
    int a[3][3] = {{1, 5, 9}, {6, 3, 4}, {2, 7, 1}};
    int i, j;
    sortRows(a, 3, 3);
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 3; j++) {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

基于new bing的编写参考学习:


void sortArray(int a[][3], int n) {
    for (int i = 0; i < n; i++) { // 对每一行进行排序
        for (int j = 0; j < 2; j++) { // 冒泡排序
            for (int k = 0; k < 2 - j; k++) {
                if (a[i][k] < a[i][k+1]) {
                    int temp = a[i][k];
                    a[i][k] = a[i][k+1];
                    a[i][k+1] = temp;
                }
            }
        }
    }
}

其中,a为二维数组名,n为二维数组的行数。该函数采用了三重循环,第一重循环i控制行数,第二重循环j控制排序次数(由于每一行只有3个元素,因此最多只需要排两次即可),第三重循环k控制比较元素位置和交换操作。通过两两比较,将每一行中的元素按照从大到小的顺序排列。