6.1
有一个包含奇数个项的整数序列,请编程按照以下规则排序:最大值排在中间,最小值排在最左,中值排在最右,其它值清为0。输入2行,第一行n表示要输入的数的个数,n是奇数。第二行输入的n个数。输出,排序后的数组,数据空格分隔,最后一个数据后面没有空格。
样例:
5
12 20 9 88 32
9 0 88 0 20
样例输入:
7
23 44 10 9 22 13 34
样例输出:
9 0 0 44 0 0 22
#include<stdio.h>
void bubble(int *array, int n)//定义冒泡排序函数,含指针
{
int max, min, mid;
int i, b, h, a;
for (i = 0; i < n - 1; i++)//使下面的梳理顺序再次执行(最多只需执行n-1次,例如43210,经过5-1=4次梳理,可得43210)
{
for (b = 0; b < n - i - 1; b++)//单次梳理顺序,顺序排列(例如43210,经过1次梳理,可得32104)
{
if (array[b] > array[b + 1])//数值交换
{
h = array[b + 1]; array[b + 1] = array[b]; array[b] = h;
}
}
}
min = array[0]; max = array[n - 1]; mid = array[(n - 1) / 2];
for (a = 0; a < n; a++)//循环赋值为0
{
if (a != 0 && a != n - 1 && a != (n - 1) / 2)
array[a] = 0;
}
array[0] = min; array[(n - 1) / 2] = max; array[n - 1] = mid;
}
int main()
{
int n, b, c, array[100];
scanf("%d", &n);
scanf("%d", &array[0]);
for (b = 1; b < n; b++)
scanf(" %d", &array[b]);
bubble(array, n);//数组内重置
printf("%d", array[0]);
for (c = 1; c < n; c++)
printf(" %d", array[c]);
system ("pause");
return 0;
}