【发布时间】:2017-03-15 17:07:50
【问题描述】:
struct SSales
{
private int Y;
private double S;
public int Year
{
get { return Y; }
set { Y = value; }
}
public double Sale
{
get { return S; }
set { S = value; }
}
public SSales (int _year, double _sales)
{
Y = _year;
S = _sales;
}
private void Sortbutton_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
if (yearradio.Checked)
{
int temp = 0;
for (int i = 0; i < bubble.Length - 1; i++)
{
for (int j = 0; j < bubble.Length - 1; j++)
{
if (bubble[i + 1].Year < bubble[i].Year)
{
temp = bubble[i].Year;
bubble[i].Year = bubble[i + 1].Year;
bubble[i + 1].Year = temp;
}
}
}
}
if (salesradio.Checked)
{
double temp2 = 0;
for (int i = 0; i < bubble.Length - 1; i++)
{
for (int j = 0; j < bubble.Length - 1; j++)
{
if (bubble[i + 1].Sale > bubble[i].Sale)
{
temp2 = bubble[i].Sale;
bubble[i].Sale = bubble[i + 1].Sale;
bubble[i + 1].Sale = temp2;
}
}
}
}
for (int i = 0; i < bubble.Length; i++)
{
listBox1.Items.Add(bubble[i].ToString());
}
}
虽然我的冒泡排序算法工作得非常好,但它们只会随着每次单击排序按钮而递增排序。我需要一键对列表框进行完全排序。
另外,就像我现在的代码一样,Years 和 Sales 完全相互独立地重新组织。当销售指数发生变化时,相应的年份指数保持在同一位置,反之亦然。
我猜测带有 int j 的 for 循环会起作用,但我不确定如何实现它。任何帮助将不胜感激!
【问题讨论】:
标签: c# sorting struct bubble-sort