气泡排序 int 只返回 0



所以我有这个家庭作业(做泡泡糖的唯一原因)

使用visualstudio,我制作了两个数组,一个在未排序的数字所在的位置,另一个在数字排序的位置。

我的代码粘贴在这里,只会在两个数组中返回0,我不知道我做错了什么,所以请帮帮我!

namespace WindowsFormsApplication5
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }
        private void btnBubbleSort_Click(object sender, EventArgs e)
        {
            int[] numbers = new int[100];
            foreach (int value in numbers)
            {
                lstBubbleUnorderd.Items.Add(value);
            }
            for (int y = 0; y < 100; y++)
            {
                for (int i = 100 - 1; i > y; --i)
                {
                    if (numbers[i] <= numbers[i - 1])
                    {
                        int temp = numbers[i];
                        numbers[i] = numbers[i - 1];
                        numbers[i - 1] = temp;
                    }
                }
            }
            for (int j = 0; j < 100; j++)
            {
                lstBubbleOrderd.Items.Add(numbers[j]);
            }
        }
    }
}

====================================================

多亏了你的,我的代码现在可以工作了

我的新代码如下:

命名空间WindowsFormsApplication5{公共分部类Form1:Form{

    public Form1()
    {
        InitializeComponent();

    }
    private void btnBubbleSort_Click(object sender, EventArgs e)
    {
        lstBubbleOrderd.Items.Clear();
        lstBubbleUnorderd.Items.Clear();
        Random RndNmbrs = new Random();
        int n = RndNmbrs.Next();
        for (int a = 0; a < 10; a++)
        lstBubbleUnorderd.Items.Add(RndNmbrs.Next(0, 10));
        int[] numbers = new int[lstBubbleUnorderd.Items.Count];
        for (int i = 0; i < numbers.Length; i++)
        {
            numbers[i] = int.Parse(lstBubbleUnorderd.Items[i].ToString());
        }

        for (int y = 0; y < numbers.Length; y++)
        {           
            for (int i = numbers.Length - 1; i > y; --i)
            {
                if (numbers[i] <= numbers[i - 1])
        {
                int temp = numbers[i];
                numbers[i] = numbers[i - 1];
                numbers[i - 1] = temp;
    }
}

                for (int j = 0; j < numbers.Length; j++)
            {
                lstBubbleOrderd.Items.Add(numbers[j]);
            }
        }
    private void button1_Click(object sender, EventArgs e)
    {
    }
    }
}

您在此处创建了数字数组:

int[] numbers = new int[100];

但您从未用任何东西填充过它,所以它的所有值都初始化为零。

也许你想做的是这样的事情(结合leemo答案中的建议)?

int[] numbers = new int[lstBubbleUnorderd.Items.Count];
for (int i = 0; i < numbers.Length; i++)
{
    numbers[i] = int.Parse(lstBubbleUnorderd.Items[i].ToString());
}
for (int y = 0; y < numbers.Length; y++)
{
    for (int i = numbers.Length - 1; i > y; --i)
    {
        if (numbers[i] <= numbers[i - 1])
        {
            int temp = numbers[i];
            numbers[i] = numbers[i - 1];
            numbers[i - 1] = temp;
        }
    }
}
for (int j = 0; j < numbers.Length; j++)
{
    lstBubbleOrderd.Items.Add(numbers[j]);
}

这将把输入lstBubbleUnorderd的任何数字读取到numbers数组中,对它们进行排序,然后在lstBubbleOrderd中打印出来。

除了@p.s.w.g:的答案

您可能需要考虑在循环中避免文字计数阈值。

因此,取而代之的是:

for (int y = 0; y < 100; y++)
            {
                for (int i = 100 - 1; i > y; --i)
                {

您可能希望根据数组的长度动态初始化它们:

for (int y = 0; y < numbers.Length; y++)
        {
            for (int i = numbers.Length - 1; i > y; --i)
            {

最新更新