我正在使用排序方法和随机。 Button1
创建参数随机化数字,大小和最大数量限制。然后根据选择的线性方法,Button2
对这些数字进行排序,然后使用秒表计算所需的时间。我目前正在实施以在文本文件中显示:sort method
,size
,time_tosort
和number of operations
。所以我完成了第一部分,当程序加载时,我已经提示用户创建一个文件,用于存储结果的位置。
我可以采用哪些方法将结果附加到textFile并对结果取平均值?在用户完成排序后,我还需要添加一个按钮来关闭写入功能吗?
所需格式的示例: sort method
,size
,time_tosort
和number of operations
Linear 10000 .9 100,000,000
Linear 10000 .8 110,000,000
Linear 10000 .75 150,000,000
Linear 10000 .50 70,000,000
Linear 10000 .7375 107,500,000 ---- AVG
CODE
namespace sortMachine
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Save()
{
var saveReport = new SaveFileDialog();
saveReport.Filter = "Text Files | *.txt";
var result = saveReport.ShowDialog();
if (result == DialogResult.Cancel || string.IsNullOrWhiteSpace(saveReport.FileName))
return;
using (var writer = new StreamWriter(saveReport.FileName))
{
writer.Write(textBox1.Text);
writer.Close();
}
}
private List<string> messages = new List<string>() { "Linear", "Bubble", "Index", "Other" };
private int clickCount = 0;
Stopwatch sw = new Stopwatch();
private void button1_Click(object sender, EventArgs e)
{
try
{
}
else if (textBox7.Text == "Bubble")
{
}
else if (textBox7.Text == "Index")
{
}
else if (textBox7.Text == "Other")
{
}
else if (textBox7.Text == "")
{
MessageBox.Show("Please input a sorting method");
}
}
private void Form1_Load(object sender, EventArgs e)
{
Save();
}
private void button3_Click(object sender, EventArgs e)
{
textBox7.Text = messages[clickCount];
clickCount++;
if (clickCount == messages.Count)
clickCount = 0;
}
}
}
答案 0 :(得分:3)
我没有浏览所有代码,但你的问题中有两个 三个部分:
如何对结果进行排序/平均?结果List
后,您可以拨打.Average()
,.OrderBy()
,依此类推在他们。这些是System.Linq
命名空间的一部分。 (有用函数的完整列表here。)
如何将其输出到文本文件?查看File.IO
命名空间。 Here's a guide
如何获取结果数据?最好的办法是创建一个新类:
class SortData
{
public string SortMethod;
public int Size;
public TimeSpan TimeToSort;
public int NumberOfOperations;
}
创建List<SortData>
并将所有结果放在那里,每个结果都为new SortData()
。然后你可以沿着这些方向做点什么:
foreach (var data in myList)
{
Console.WriteLine(SortMethod + "\t" + Size + "\t" + TimeToSort + "\t" + NumberOfOperations);
}
您需要输出到文件而不是控制台,但想法是一样的。