有数组定义如下:
#define ARR_LEN 10
int arr[ARR_LEN] = {12,23,34,45,65,76,8,6,34,5};
将数组中 比 数组平均值小的数据移动到数组的前部分,将数组中 比数组平均值大的数据移动到数组的后部分。
例如上述数组中的平均值为 30.8
移动后,数组中的数据为:
12 23 8 6 5 34 45 65 76 34
#include <stdio.h>
#define ARR_LEN 10
int main()
{
int arr[ARR_LEN] = {12, 23, 34, 45, 65, 76, 8, 6, 34, 5};
float ave = 0;
for (size_t i = 0; i < ARR_LEN; i++)
{
ave += arr[i];
}
ave /= ARR_LEN;
for (size_t i = 0; i < ARR_LEN - 1; i++)
{
if (ave < arr[i])
{
for (size_t j = i + 1; j < ARR_LEN; j++)
{
if (ave > arr[j])
{
int t = arr[j];
for (size_t k = j; k > i; k--)
{
arr[k] = arr[k - 1];
}
arr[i] = t;
break;
}
}
}
}
for (size_t i = 0; i < ARR_LEN; i++)
{
printf("%d ", arr[i]);
}
return 0;
}