数组排序
【例3】青年歌手参加歌曲大奖赛,有10个评委对她的进行打分,下面的程序求这位选手的平均得分(去掉一个最高分和一个最低分)。分析并运行该程序,然后画出程序流程图。分析:这道题的核心是排序。将评委所打的10个分数利用数组按增序(或降序)排列,
计算数组中除第一个和最后一个分数以外的数的平均分,其中排序部分这里用选择法排序来实现。
选择法排序:首先找出值最小的数,然后把这个数与第一个数交换,这样值最小的数就放到了第一个位置;
然后,在从剩下的数中找值最小的,把它和第二个数互换,使得第二小的数放在第二个位置上。
以此类推,直到所有的值从小到大的顺序排列为止。
下面是选择排序的算法,自己稍微改下就能用了
#include <stdio.h>
void selection_sort(int array[], int length);
void selection_sort(int array[], int length)
{
int i, j, min, temp;
for (i = 0; i < length - 1; i++)
{
min = i;
for (j = i + 1; j < length; j++)
{
if (array > array)
{
min = j;
}
}
temp = array;
array = array;
array = temp;
}
}
int main(void)
{
int array[] = {73, 108, 111, 118, 101, 70, 105, 115, 104, 67, 46, 99, 111, 109};
int i, length;
length = sizeof(array) / sizeof(array);
selection_sort(array, length);
printf("排序后的结果是:");
for (i = 0; i < length; i++)
{
printf("%d ", array);
}
putchar('\n');
return 0;
} 可以不用排序,直接走一遍循环,循环内部进行判断找出min值与max值,并进行累强。循环结束后,累加中减去min和max 再求平均!
页:
[1]