把形参a所指数组中的最小值放在元素a[0]中,接着把a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3],以此类推。 例如,若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7;则按规则移动后,数据排列为:1、9、2、8、3、7、4、6、5。形参n中存放a所指数组中数据的个数。 规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。
时间: 2023-05-20 22:02:34 浏览: 135
以下是一个可能的解法:
```
void fun(int a[], int n) {
int max, min, px, py, i, j, t;
for (i = 0; i < n - 1; i += 2) {
max = a[i];
px = i;
min = a[i + 1];
py = i + 1;
for (j = i + 2; j < n; j++) {
if (a[j] > max) {
max = a[j];
px = j;
}
if (a[j] < min) {
min = a[j];
py = j;
}
}
if (px != i) {
t = a[i];
a[i] = a[px];
a[px] = t;
if (py == i) {
py = px;
}
}
if (py != i + 1) {
t = a[i + 1];
a[i + 1] = a[py];
a[py] = t;
}
}
}
```
这个函数的实现思路是,每次找到当前未处理部分中的最大值和最小值,然后将它们分别放到规定的位置上。具体来说,我们从第0个位置开始,找到未处理部分中的最大值和最小值,将最大值放到第1个位置,将最小值放到第0个位置。然后从第2个位置开始,找到未处理部分中的次大值和次小值,将次大值放到第3个位置,将次小值放到第2个位置。以此类推,直到处理完所有元素。
注意,这个函数的时间复杂度是O(n^2),并不是最优解。如果需要更高效的算法,可以参考一些排序算法,比如快速排序、堆排序等。
相关推荐
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)