我有点问题。我正在尝试对其中包含对象的数组进行排序。这些物品是带有名称,价格和类型的瓶子。用户可以选择要添加到阵列中的瓶子。
对于赋值,我们必须使用冒泡排序。我已经做到了,除了只能对价格进行排序。整个对象不会切换,只是价格本身。因此,如果可口可乐的原始价格在清单中为13,则在气泡排序后为10。因此,唯一有意义的更改或排序是价格,而不是整个对象。
public void sort_sodas()
{
int max = sodas.Length - 1;
for (int i = 0; i < max; i++)
{
int nrLeft = max - i;
for (int j = 0; j < nrLeft; j++)
{
if (sodas[j+1] == null)
{
break;
}
else if (sodas[j].Price > sodas[j+1].Price)
{
int temp = sodas[j].Price;
sodas[j].Price = sodas[j + 1].Price;
sodas[j + 1].Price = temp;
}
}
}
在气泡排序前后的图像下面:
答案 0 :(得分:2)
您不应在此处更改物品价格:
else if (sodas[j].Price > sodas[j + 1].Price)
{
int temp = sodas[j].Price;
sodas[j].Price = sodas[j + 1].Price;
sodas[j + 1].Price = temp;
}
您应该更改对象位置:
else if (sodas[j].Price > sodas[j + 1].Price)
{
var tempObject = sodas[j];
sodas[j] = sodas[j + 1];
sodas[j + 1] = tempObject;
}