0

我正在使用排序方法和随机。 Button1创建参数随机化数字、大小和最大数量限制。然后根据选择的线性方法,Button2对这些数字进行排序,然后使用秒表计时花费了多长时间。我目前正在实施以 在文本文件中显示: sort methodsize和。所以我已经完成了第一部分,当程序加载时,我已经提示用户创建一个文件来存储结果。 time_tosortnumber of operations

我可以通过哪些方法将结果附加到 textFile 并对结果进行平均?我还需要在用户完成排序后添加一个按钮来关闭写入功能吗?

所需格式的示例sort methodsizetime_tosortnumber 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

代码

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

}

4

1 回答 1

3

我没有查看所有代码,但是您的问题有两个 三个部分:

如何对结果进行排序/平均? 获得List结果后,您可以调用.Average().OrderBy()等。这些是System.Linq命名空间的一部分。(这里有用功能的完整列表。)

如何将其输出到文本文件?看一下File.IO命名空间。 这是一个指南

如何获取结果的数据?你最好的选择是创建一个新类:

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

您需要输出到文件而不是控制台,但想法是一样的。

于 2012-10-24T15:46:36.007 回答