利用行指针传参实现二维数组的每一行按从小到大排序排序,(排序算法采用选择法排序)c语言
时间: 2023-12-06 10:03:06 浏览: 114
可以参考以下代码实现:
```c
#include <stdio.h>
void sort(int *arr, int n) {
int i, j, tmp;
for (i = 0; i < n-1; i++) {
int minIndex = i;
for (j = i+1; j < n; j++) {
if (*(arr+j) < *(arr+minIndex))
minIndex = j;
}
if (minIndex != i) {
tmp = *(arr+i);
*(arr+i) = *(arr+minIndex);
*(arr+minIndex) = tmp;
}
}
}
void sort2DArray(int rows, int cols, int arr[][cols]) {
int i;
for (i = 0; i < rows; i++) {
sort(*(arr+i), cols);
}
}
int main() {
int arr[3][4] = {{7, 6, 5, 4}, {3, 2, 1, 0}, {8, 9, 10, 11}};
int i, j;
sort2DArray(3, 4, arr);
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
```
其中,`sort` 函数是选择排序算法的实现,`sort2DArray` 函数则是对二维数组每一行进行排序。在 `sort2DArray` 中,利用了行指针传参的方式,通过 `*(arr+i)` 取得第 i 行的首地址,然后将其传递给 `sort` 函数进行排序。最后在 `main` 函数中,打印出排好序的二维数组。
阅读全文