王三岁w 发表于 2020-6-4 18:27:34

数组排序

【例3】青年歌手参加歌曲大奖赛,有10个评委对她的进行打分,下面的程序求这位选手的平均得分(去掉一个最高分和一个最低分)。分析并运行该程序,然后画出程序流程图。
        分析:这道题的核心是排序。将评委所打的10个分数利用数组按增序(或降序)排列,
      计算数组中除第一个和最后一个分数以外的数的平均分,其中排序部分这里用选择法排序来实现。
        选择法排序:首先找出值最小的数,然后把这个数与第一个数交换,这样值最小的数就放到了第一个位置;
      然后,在从剩下的数中找值最小的,把它和第二个数互换,使得第二小的数放在第二个位置上。
      以此类推,直到所有的值从小到大的顺序排列为止。

我叫MD 发表于 2020-6-4 18:31:27

下面是选择排序的算法,自己稍微改下就能用了

#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;
}

fhzzxxx 发表于 2020-6-5 08:54:57

可以不用排序,直接走一遍循环,循环内部进行判断找出min值与max值,并进行累强。循环结束后,累加中减去min和max 再求平均!
页: [1]
查看完整版本: 数组排序