编写函数用冒泡排序法将二维数组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控制比较元素位置和交换操作。通过两两比较,将每一行中的元素按照从大到小的顺序排列。