从大到小用指针函数怎么写
时间: 2023-07-26 12:18:36 浏览: 42
假设要排序的数组为 `arr`,长度为 `n`,排序方式为从大到小。可以使用指针函数来实现排序,具体实现如下:
```c
#include <stdio.h>
// 比较两个整数的大小,返回较大的整数
int* max(int* a, int* b) {
return (*a > *b) ? a : b;
}
// 使用指针函数从大到小排序数组
void sort_desc(int* arr, int n) {
int* p, * q, * max_ptr;
for (p = arr; p < arr + n - 1; ++p) {
max_ptr = p;
for (q = p + 1; q < arr + n; ++q) {
if (*q > *max_ptr) {
max_ptr = q;
}
}
if (max_ptr != p) {
int tmp = *p;
*p = *max_ptr;
*max_ptr = tmp;
}
}
}
int main() {
int arr[] = { 5, 2, 8, 1, 6 };
int n = sizeof(arr) / sizeof(int);
printf("Before sorting: ");
for (int i = 0; i < n; ++i) {
printf("%d ", arr[i]);
}
sort_desc(arr, n);
printf("\nAfter sorting: ");
for (int i = 0; i < n; ++i) {
printf("%d ", arr[i]);
}
return 0;
}
```
在这个例子中,`max()` 函数是一个指针函数,它接受两个指向整数的指针参数,比较这两个整数的大小,并返回较大的整数的指针。在 `sort_desc()` 函数中,我们使用 `max()` 函数来查找数组中最大的元素,并将其与当前位置的元素进行交换,从而实现从大到小排序的功能。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)