将这个数组按从高到低排序,要求用指针实现
时间: 2024-02-16 19:04:57 浏览: 30
好的,我来解答你的问题。以下是将数组按从高到低排序的指针实现代码:
```c
#include <stdio.h>
void sort(int *arr, int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (*(arr + i) < *(arr + j)) { // 判断前者是否小于后者
temp = *(arr + i);
*(arr + i) = *(arr + j);
*(arr + j) = temp;
}
}
}
}
int main() {
int arr[] = {5, 3, 2, 8, 7, 9, 10};
int n = sizeof(arr) / sizeof(arr[0]);
int *p = arr;
int i;
printf("Original array: ");
for (i = 0; i < n; i++) {
printf("%d ", *(p + i));
}
sort(p, n);
printf("\nSorted array: ");
for (i = 0; i < n; i++) {
printf("%d ", *(p + i));
}
return 0;
}
```
在上面的代码中,我们首先定义了一个 `sort` 函数,用于排序。它接受一个指向整型数组的指针和数组的长度作为参数。然后,我们使用两个循环来遍历数组,并比较相邻的元素大小。如果前者小于后者,则交换它们的位置。
在 `main` 函数中,我们定义了一个整型数组 `arr` 和一个整型变量 `n`,用于存储数组的长度。接着,我们定义了一个指向整型数组的指针 `p`,并将其指向数组的第一个元素。然后,我们使用指针来遍历数组并打印出原始数组和排序后的数组。
注意:在使用指针访问数组元素时,我们必须使用 `*(p + i)` 的形式,而不是 `p[i]` 的形式。因为在指针操作中,`p + i` 表示指针向右移动 `i` 个元素,而 `p[i]` 表示从 `p` 开始向右移动 `i` 个元素,这两者是不同的。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.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)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)