编写程序,将一维数组x中大于平均值的数据移至数组的前部,小于等于平均值的数据移至数组的后部。 用c语言中的数组编写,不要用到指针
时间: 2024-11-28 07:27:51 浏览: 6
在C语言中,你可以通过两层循环遍历数组来实现这个功能。首先计算数组的平均值,然后遍历一次数组,判断每个元素是否大于平均值,如果大于就交换它与当前已排序部分的末尾元素位置,最后保持剩余部分不变。以下是简单的实现:
```c
#include <stdio.h>
void rearrange_array(int x[], int n) {
float sum = 0;
for (int i = 0; i < n; i++) {
sum += x[i];
}
float average = sum / n;
int left = 0; // 已排序部分的末尾
for (int i = 0; i < n; i++) {
if (x[i] > average) {
for (int j = n - 1; j >= left; j--) { // 从后向前找到空位并交换
if (x[j] <= average) {
int temp = x[i];
x[i] = x[j];
x[j] = temp;
left++; // 移动左边界
break;
}
}
}
}
}
// 示例
int main() {
int x[] = {5, 8, 3, 9, 2, 7, 4};
int n = sizeof(x) / sizeof(x[0]);
rearrange_array(x, n);
printf("Sorted array with elements greater than the average at front:\n");
for (int i = 0; i < n; i++) {
printf("%d ", x[i]);
}
return 0;
}
```
在这个示例中,`rearrange_array()` 函数接收一个整数数组 `x` 和它的长度 `n`,函数内部会先计算平均值,然后使用两个嵌套循环将大于平均值的元素移到前面。
阅读全文