C语言使用指针的方式对数组排序使用
时间: 2024-01-26 17:05:19 浏览: 196
对于一个数组,可以使用选择排序、冒泡排序、插入排序等算法进行排序。其中,选择排序和冒泡排序比较简单,插入排序稍微复杂一些,但是效率更高。
下面以选择排序为例,介绍如何使用指针对数组进行排序。
```c
#include <stdio.h>
void selection_sort(int *arr, int len) {
int i, j, min_idx, tmp;
for (i = 0; i < len - 1; i++) {
min_idx = i;
for (j = i + 1; j < len; j++) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
if (min_idx != i) {
tmp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = tmp;
}
}
}
int main() {
int arr[] = {3, 4, 1, 5, 2};
int len = sizeof(arr) / sizeof(int);
selection_sort(arr, len);
int i;
for (i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这里的`selection_sort`函数使用了指针`arr`来表示输入的数组。在函数内部,可以通过`arr[i]`来访问数组中的元素,与`*(arr + i)`等价。`len`则表示数组的长度,用于控制循环次数。
在主函数中,首先定义了一个整型数组`arr`,并根据数组长度计算出了`len`。然后调用`selection_sort`函数对数组进行排序,最后输出排序后的结果。
需要注意的是,使用指针传递数组时,需要传递数组的首地址,而不是数组名本身。因此,调用`selection_sort`函数时传递的参数应该是`selection_sort(arr, len)`,而不是`selection_sort(&arr, len)`。
阅读全文