在Windows Form C#上使用冒泡排序算法对随机数进行排序?

时间:2018-02-26 05:33:13

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

我想在Visual Studio窗体应用程序中编写一个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的程序显然不起作用。如果有人能给我建议如何使其工作或更简单的方法来创建这个程序,请告诉我!我感谢所有人愿意提供的帮助。

1 个答案:

答案 0 :(得分:0)

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

  1. 请使用SortBtn_Click文本框中的文字,而不是在textNumber函数中创建新的随机数。
  2. SortBtn_Click函数中,首先检查textNumber为空或空。如果字符串为null或为空,则抛出错误。
  3. 在其他部分,拆分字符串并将其转换为整数数组。
  4. 您可以使用以下代码拆分字符串。

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

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

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

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

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