C语言 编写程序仅在main函数内用起泡法对数组a中前n个元素,进行分段排序,其中前一半为从大到小排序后一半为从小到大排序,并把n个数的平均值存在变量average中,n为奇数时,位于中间点的数不需要排序。
时间: 2023-02-06 18:30:50 浏览: 65
C语言中的起泡法的排序大致如下:
```
#include <stdio.h>
#define N 10
int main() {
int a[N] = {3, 1, 4, 2, 7, 6, 9, 5, 8, 0};
int i, j, temp;
int n = N;
int average = 0;
// 前一半从大到小排序
for (i = 0; i < n / 2; i++) {
for (j = 0; j < n / 2 - i - 1; j++) {
if (a[j] < a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
// 后一半从小到大排序
for (i = n / 2; i < n; i++) {
for (j = n / 2; j < n - i - 1; j++) {
if (a[j] > a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
// 计算平均值
for (i = 0; i < n; i++) {
average += a[i];
}
average /= n;
printf("平均值: %d\n", average);
return 0;
}
```
注意:这里的起泡法有一些瑕疵,可能不太适合大规模的数据。如果需要高效的排序算法,可以使用其他算法,如快速排序、归并排序等。
阅读全文