c++对整型数组排序再去掉最大值最小值然后求平均
时间: 2023-10-11 07:10:59 浏览: 158
c++对数组的排序
数,你会如何实现?
要实现这个问题,可以采用以下步骤:
1. 定义整型数组,并对数组进行排序,可以使用快速排序等算法进行实现。
2. 去掉数组中的最大值和最小值,可以使用下标遍历的方式寻找最大值和最小值,并将其排除。
3. 对剩余的数组元素求和,并除以数组长度减去2,即可得到平均数。
下面是一段示例代码:
```c
#include <stdio.h>
void quick_sort(int arr[], int left, int right) {
if (left < right) {
int pivot = arr[left]; // 选取首元素为基准值
int low = left, high = right;
while (low < high) {
while (low < high && arr[high] >= pivot) high--; // 从右开始找小于基准值的元素
arr[low] = arr[high];
while (low < high && arr[low] <= pivot) low++; // 从左开始找大于基准值的元素
arr[high] = arr[low];
}
arr[low] = pivot; // 将基准值放入正确位置
quick_sort(arr, left, low - 1); // 递归排序左半部分
quick_sort(arr, low + 1, right); // 递归排序右半部分
}
}
float average(int arr[], int n) {
quick_sort(arr, 0, n - 1); // 对数组进行排序
int sum = 0;
for (int i = 1; i < n - 1; i++) { // 排除最大值和最小值
sum += arr[i];
}
return (float)sum / (n - 2); // 求平均数
}
int main() {
int arr[] = {9, 5, 7, 2, 1, 4, 6, 3, 8};
int n = sizeof(arr) / sizeof(arr[0]);
float avg = average(arr, n);
printf("平均数为:%.2f\n", avg); // 输出结果:平均数为:5.00
return 0;
}
```
阅读全文