【问题标题】:Using the Bubble Sort Algorithm on Windows Form C# to sort random numbers?在 Windows Form C# 上使用冒泡排序算法对随机数进行排序?
【发布时间】:2018-02-26 05:33:13
【问题描述】:

我想在 Visual Studios Windows 窗体应用程序中编写一个需要实现以下功能的 C# 程序:

创建 1,000 个介于 1 和 5000 之间的随机数

使用冒泡排序算法对 1000 个数字进行排序

这是我目前的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Prog7
{
    public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void btnGenerate_Click(object sender, EventArgs e)
    {
        Random num = new Random();
        string line = Environment.NewLine;
        int nbr = num.Next(0, 5001);
        textNumbers.Text = nbr.ToString();

        for(int i = 1; i <= 1000; i++)
        {
            nbr = num.Next(0, 5001);
            textNumbers.Text = textNumbers.Text + line + nbr.ToString();
        }

    }

    private void SortBtn_Click(object sender, EventArgs e)
    {
        bool inorder = false;
        while (!inorder)
        {
            inorder = true;
            for (int i = 1; i <= 1000; i++)
            {
                if (swap(ref i, ref i + 1))
                    inorder = false;
            }
        }

        for (int i = 1; i <= 1000; i++)
        {
            nbr = num.Next(0, 5001);
            SortBox.Text = SortBox.Text + line + nbr.ToString();
        }


    }

    private bool swap(ref int top, ref int bottom)
    {
        int temp;

        if (top <= bottom)
            return false;

        temp = top;
        top = bottom;
        bottom = temp;
        return true;

    }
}
}

我最初的计划是让表单有一个用于生成数字的按钮和一个用于对数字进行排序的按钮,其中包含两个文本框以列出数字。我的 btnGenerate_Click 中的代码可以很好地生成 1000 个不同的数字。但是我很难弄清楚如何将冒泡排序算法输入到这个程序中。我在网上查了很多关于该怎么做的例子,但是很多例子都涉及一个我没有使用的数组列表。我现在用于 SortBtn_Click 的程序显然不起作用。如果有人可以就如何使其工作或创建此程序的更简单方法给我建议,请告诉我!感谢任何人愿意提供的所有帮助。

【问题讨论】:

  • 您想对textNumbers 文本框中的数字进行排序吗?如果是,那么您没有使用这些数字作为冒泡排序的输入。如果否,请告诉我btnGenerate的点击事件的用法
  • 是的,我想使用在 textnumbers 文本框中生成的数字并对它们进行排序,以便它们可以显示在 SortBox 中。你能告诉我如何准确地使用气泡排序,因为我真正放下的任何东西都会出现某种形式的错误?
  • 您应该注意,在btnGenerate_Click 事件中……您正在“创建”变量“num、“line”和“nbr”。由于当代码离开btnGenerate_Click 事件时它们将超出范围,因此您将无法像在其他方法SortBtn_Clicks 中那样使用这些变量。

标签: c# random windows-forms-designer bubble-sort


【解决方案1】:

您可以按照以下步骤解决您的问题:

  1. 不要在SortBtn_Click 函数中创建新的随机数,而是使用textNumber 文本框中的文本。
  2. 在SortBtn_Click 函数中,首先检查textNumber 是否为空或为空。如果字符串为 null 或为空,则抛出错误。
  3. 在else部分,将字符串拆分成整型数组。

您可以使用以下代码拆分字符串。

 string[] strArr = textNumber.Text.split(Environment.NewLine);

现在将字符串数组转换为整数数组。

int[] intArr = Array.ConvertAll(strArr, Int32.Parse);

现在对 intArr 变量应用冒泡排序,将结果存储在 SortBox.Text 文本字段中

注意:正如@JohnG 提到的,当执行离开btnGenerate_click 函数时,btnGenerate_Click (num, line, nbr) 中使用的变量超出了范围。所以你不能将这些变量用于其他函数。如果您想使用这些变量,请在类范围内声明这些变量(Global declaration)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 2017-09-27
    • 1970-01-01
    相关资源
    最近更新 更多