编写一个C语言:用指针对二维数组冒泡排序
时间: 2024-11-17 17:29:21 浏览: 19
二维数组如何进行冒泡排序
5星 · 资源好评率100%
在C语言中,可以编写一个使用指针对二维数组进行冒泡排序的函数。这里我们假设二维数组是一个整型数组,每一行都是一个有序的序列,但我们想要按列对其进行排序。冒泡排序算法通过交换相邻元素对来进行排序,所以对于二维数组,我们需要逐列地应用这个过程。
下面是一个简单的示例,我们将创建一个名为`bubble_sort_2d`的函数,它接受一个指向二维数组的指针,以及数组的行数和列数作为参数:
```c
#include <stdio.h>
void bubble_sort_2d(int** arr, int rows, int cols) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols - 1; j++) {
// 对每列进行比较并交换
if (*(arr[i]+j) > *(arr[i]+j+1)) {
// 使用指针交换相邻元素
int temp = *(arr[i]+j);
*(arr[i]+j) = *(arr[i]+j+1);
*(arr[i]+j+1) = temp;
}
}
}
}
// 示例用法
int main() {
int arr[3][4] = {{5, 2, 6, 1}, {9, 8, 7, 3}, {4, 10, 11, 0}};
int rows = 3, cols = 4;
bubble_sort_2d(arr, rows, cols);
// 打印排序后的二维数组
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
```
这个程序首先初始化一个二维数组,然后对每列进行冒泡排序。注意,我们在内层循环里只遍历到`cols - 1`,因为最后一列已经是有序的了。
阅读全文