排序方法并将结果写入文本文件

时间:2012-10-24 15:19:21

标签: c# winforms

我正在使用排序方法和随机。 Button1创建参数随机化数字,大小和最大数量限制。然后根据选择的线性方法,Button2对这些数字进行排序,然后使用秒表计算所需的时间。我目前正在实施以在文本文件中显示:sort methodsizetime_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

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

}

1 个答案:

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

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