用指针函数完成选择排序
时间: 2023-10-13 09:14:02 浏览: 66
下面是用指针函数完成选择排序的示例代码:
```c
#include <stdio.h>
void selection_sort(int *arr, int n); // 声明选择排序函数
int main() {
int arr[] = {64, 25, 12, 22, 11};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Original array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
selection_sort(arr, n); // 调用选择排序函数
printf("Sorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
void selection_sort(int *arr, int n) {
int i, j, min_idx;
for (i = 0; i < n - 1; i++) {
min_idx = i;
for (j = i + 1; j < n; j++) {
if (*(arr + j) < *(arr + min_idx)) {
min_idx = j;
}
}
int temp = *(arr + i);
*(arr + i) = *(arr + min_idx);
*(arr + min_idx) = temp;
}
}
```
解释一下代码:
1. 在 `main()` 函数中,我们定义了一个整型数组 `arr`,并初始化它的值;
2. 然后通过 `sizeof()` 函数获取数组元素数量,存储在变量 `n` 中;
3. 输出原始数组的值;
4. 调用 `selection_sort()` 函数对数组进行排序;
5. 输出排序后的数组值;
6. 最后返回 0,表示程序正常结束。
在 `selection_sort()` 函数中,我们使用了指针来访问数组元素。首先,我们声明了三个整型变量 `i`、`j` 和 `min_idx`,分别表示外层循环、内层循环和最小元素的下标。然后,我们使用两个嵌套的循环来遍历数组,找到当前未排序部分的最小元素,并将其与未排序部分的第一个元素交换位置。在交换元素时,我们使用指针来访问数组元素,使用 `*` 运算符对指针进行间接引用,即获取指针指向的值。最后,我们得到了一个按升序排列的数组。
需要注意的是,指针函数并不是指针类型的函数,而是返回指针类型的函数。这里我们没有用到指针函数,而是用了指针来访问数组。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)