如何找到排序列表的 MIN、MAX、SUM 和 AVG

How Can I Find the MIN, MAX, SUM and AVG of A Sorted List

该程序旨在从文件中读取元素,然后使用 shell 排序对这些元素进行排序,将排序后的元素保存到数组中,然后求最小值、最大值、总和和平均值。

到目前为止,它会读取文件、对元素进行排序并将它们存储在一个数组中,但之后我无法找到最小值、最大值、总和和平均值。

到目前为止,这是我的代码:

#include <iostream>
#include <fstream>

#include "arrayListType.h"

using namespace std;

int main()
{
    ifstream inFile;
    ofstream outFile;

    inFile.open("text.txt");

    arrayListType<int> list;
    arrayListType<int> newList;

    int num, counter = 0, min, max, sum = 0, avg = 0;

    while (inFile >> num)
    {
        list.insertEnd(num);
    }

    inFile.close();

    outFile.open("out.txt");


    cout << "The list before sorting:" << endl;
    list.print();
    cout << endl;

    list.shellSort();

    cout << "The list after sorting:" << endl;
    list.print();
    cout << endl;

    list = newList;


    cout << endl;
    return 0;
}

好吧,如果列表已排序,那么:

min 是第一个元素

max 是最后一个元素

sum 是将所有元素相加

平均值(假设你的意思是平均值)是总和/列表中元素的数量

不管有没有排序,你都可以使用暴力法:

int minimum = MAX_INT;
int maximum = MIN_INT;
int sum = 0; 
unsigned int quantity = 0U;
Let p = start of list;
while (p != end of list)
{
  if (p->value < minimum) minimum = p->value;
  if (p->value > maximum) maximum = p->value;
  sum = sum + p->value;
  ++quantity;
  p = p->next;
}
double average = 0.0;
if (quantity != 0)
{
  average = (double)sum / (double) quantity;
}

编辑 1:
为了节省一些时间,您可以执行这些计算,minimummaximumsum数量,当你插入列表时。

这让人想到列表是不必要的,除非您要在计算平均值后处理这些值。