如何找到排序列表的 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:
为了节省一些时间,您可以执行这些计算,minimum、maximum、sum 和 数量,当你插入列表时。
这让人想到列表是不必要的,除非您要在计算平均值后处理这些值。
该程序旨在从文件中读取元素,然后使用 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:
为了节省一些时间,您可以执行这些计算,minimum、maximum、sum 和 数量,当你插入列表时。
这让人想到列表是不必要的,除非您要在计算平均值后处理这些值。