使用 Windows 窗体在 c# 中进行冒泡排序.新手问

本文关键字:冒泡排序 新手 Windows 窗体 使用 | 更新日期: 2023-09-27 17:55:29

问题=解决了,谢谢大家!

我和我的伴侣正在开发一个程序,对用户自己输入的x个数字进行排序。这是我们的进步。该程序不会按照我们想要的方式进行,我们已经在互联网上检查了数小时以寻找解决方案,但似乎都没有工作。请帮助我们修复代码。如果我完全理解了事物,它是一个"气泡排序程序"。

另外,我们都对 c# 非常陌生,所以如果可能的话,请不要使用复杂的解决方案。只需尝试使用我们当前使用的函数修改我们的代码。谢谢!

public partial class Form1 : Form
{
    List<int> nummerlista = new List<int>();
    public Form1()
    {
        InitializeComponent();
    }
    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        if (input.Text != "")
        {
            int siffra = Convert.ToInt32(input.Text);
            nummerlista.Add(siffra);
            //   nummerlista.Add(Convert.ToInt32(input.Text));
            System.Threading.Thread.Sleep(300);
            input.Clear();
        }
    }
    private void button2_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < nummerlista.Count; i++)
        {
            output.AppendText(Convert.ToString(nummerlista[i]) + " ");
        }
        int t = 0;
        for (int v = 0; v < nummerlista.Count; v++)
        {
            for (int c = 0; c < nummerlista.Count; c++)
            {
                if (nummerlista[v] < nummerlista[c])
                {
                    t = nummerlista[v];
                    nummerlista[v] = nummerlista[c];
                    nummerlista[c] = t;
                }
            }
        }
        for (int i = 0; i < nummerlista.Count - 1; i++)
        {
            outputSorterad.AppendText(Convert.ToString(nummerlista[i]) + " ");
        }
    }
}

使用 Windows 窗体在 c# 中进行冒泡排序.新手问

你只是在转储输出时有错误

for (int i = 0; i < nummerlista.Count - 1; i++)

应该是

for (int i = 0; i < nummerlista.Count; i++)

由于您不熟悉 C#,您需要了解大多数时候 .Net Framework 将为您提供这些基本功能 - 您只需要找到它。

因此,对于排序,您只需要针对泛型列表调用排序方法nummerlista.Sort() http://msdn.microsoft.com/en-us/library/b0zbh7b6.aspx

下面是一个 c# 气泡排序的示例,如果此任务的重点是实现算法 https://stackoverflow.com/a/14768087/81053

一些建议:

打印时,您需要转储整个列表:

for (int i = 0; i < nummerlista.Count; i++)

当您排序时,内部循环不需要转到列表的末尾。去外面的柜台就足够了:

for (int v = 0; v < nummerlista.Count; v++)
        {
            for (int c = 0; c < v; c++)

此外,访问列表<>元素有点慢。可能更好的主意是在输入完成后立即将列表转换为数组。

最后,如果你不想练习不同的排序算法,你可以使用 List.Sort - http://msdn.microsoft.com/en-us/library/3da4abas(v=vs.110).aspx