所以我有这个家庭作业(唯一的原因就是为什么会做出泡泡)
使用visual studio我制作了2个阵列,其中一个是未分类的数字,第二个是数字的分类。
我的代码,因为我将它粘贴在这里,只会在两个数组中返回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:表格 {
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)
{
}
}
}
答案 0 :(得分:6)
您在此处创建了数组:
int[] numbers = new int[100];
但是你从来没有用任何东西填充它,所以它的所有值都被初始化为零。
也许您打算做的是这样的事情(包含来自leemo's answer的建议)?
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
中打印出来。
答案 1 :(得分:1)
除了@ 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)
{