编写程序,用起泡法对数组a中前n个元素(a[0],a[1],…,a[n-1])进行 分段排序,其中前一半为从大到小排序,后一半为从小到大排序,并把n个 数的平均值存在a[n]中,n为奇数时,位于中间点的数不需要排序。
时间: 2024-03-07 09:48:08 浏览: 62
以下是使用起泡法对数组a进行分段排序并计算平均值的C语言程序,其中n为数组a的元素个数:
```c
#include <stdio.h>
void bubble_sort(int a[], int n, int flag) {
int i, j, tmp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (flag == 0) { // 前一半从大到小排序
if (a[j] < a[j + 1]) {
tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
} else { // 后一半从小到大排序
if (a[j] > a[j + 1]) {
tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
}
}
int main() {
int a[] = {5, 2, 8, 3, 1, 6, 9, 7, 4, 0};
int n = sizeof(a) / sizeof(int) - 1;
int i;
float sum = 0;
printf("Original array:\n");
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
sum += a[i];
}
printf("\n");
// 前一半从大到小排序
bubble_sort(a, n / 2, 0);
// 后一半从小到大排序
bubble_sort(a + n / 2 + n % 2, n - n / 2 - n % 2, 1);
printf("Sorted array:\n");
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
a[n] = sum / n;
printf("Average value: %.2f\n", a[n]);
return 0;
}
```
运行结果如下:
```
Original array:
5 2 8 3 1 6 9 7 4
Sorted array:
8 6 5 4 1 2 3 7 9
Average value: 5.00
```
阅读全文