C语言 编写程序,用起泡法对数组a中前n个元素,进行分段排序,其中前一半为从大到小排序后一半为从小到大排序,并把n个数的平均值存在变量average中,n为奇数时,位于中间点的数不需要排序。
时间: 2023-02-06 12:34:10 浏览: 91
以下是用 C 语言实现起泡排序(冒泡排序)的程序:
```
#include <stdio.h>
void bubble_sort(int a[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (a[j] > a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
int main() {
int a[] = {3, 4, 1, 5, 2};
int n = 5;
bubble_sort(a, n);
int i;
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
上面的程序使用起泡排序对数组 `a` 进行升序排序。为了实现题目中要求的分段排序,可以在程序中加入如下代码:
```
int mid = n / 2;
// 对前一半进行降序排序
bubble_sort(a, mid);
for (i = 0; i < mid / 2; i++) {
temp = a[i];
a[i] = a[mid - i - 1];
a[mid - i - 1] = temp;
}
// 对后一半进行升序排序
bubble_sort(a + mid, n - mid);
```
程序中的变量 `mid` 表示数组的中间位置,对前一半使用起泡排序进行升序排序,然后再反转前一半的数组,实现从大到小的排序。对后一半使用起泡排序进行升序排序,实现从小到大的排序。
最后,为了计算平均值,可以使用以下代码:
```
int sum = 0;
for (i
阅读全文