用c语言 3*3二维数组的排序 (两种情况:1、每行进行从大到小的排序2、整个数组进行从大到小的排序
时间: 2024-10-28 09:10:12 浏览: 7
在C语言中,我们可以使用嵌套循环以及标准库函数`qsort()`或自定义排序算法来对3x3的二维数组进行排序。这里提供两种情况的排序方法:
1. 每行从大到小排序:
- 首先,遍历每一行,可以创建一个临时一维数组存储当前行的元素,然后对该一维数组进行降序排列。
```c
#include <stdio.h>
#define ROWS 3
#define COLS 3
void sortRow(int arr[ROWS][COLS], int row) {
int temp[COLS];
for (int i = 0; i < COLS; i++) {
temp[i] = arr[row][i];
}
// 自定义从大到小排序算法(如选择排序)
// 或者使用qsort()替换下面的代码
for (int i = 0; i < COLS - 1; i++) {
for (int j = i + 1; j < COLS; j++) {
if (temp[j] > temp[i]) {
int temp_swap = temp[i];
temp[i] = temp[j];
temp[j] = temp_swap;
}
}
}
// 将排序后的元素放回原位置
for (int i = 0; i < COLS; i++) {
arr[row][i] = temp[i];
}
}
2. 整个数组从大到小排序:
- 对整个3x3矩阵视为一维数组处理,然后调用`qsort()`或其他通用的排序函数,如果需要的话,编写一个比较函数来指定降序排序。
```c
void sortArray(int arr[ROWS * COLS], int size) {
qsort(arr, size, sizeof(int), compare_descending);
}
int compare_descending(const void* a, const void* b) {
return (*(int*)b - *(int*)a); // 降序比较
}
```
这里假设`compare_descending`函数用于比较两个元素并返回负数、零或正数,表示第一个元素大于、等于或小于第二个元素。
阅读全文