所以我有这个家庭作业(做泡泡糖的唯一原因)
使用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)
{