如何对数组中的对象进行冒泡排序?

时间:2019-03-22 10:04:22

标签: c# arrays sorting object

我有点问题。我正在尝试对其中包含对象的数组进行排序。这些物品是带有名称,价格和类型的瓶子。用户可以选择要添加到阵列中的瓶子。

对于赋值,我们必须使用冒泡排序。我已经做到了,除了只能对价格进行排序。整个对象不会切换,只是价格本身。因此,如果可口可乐的原始价格在清单中为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;
            }
        }
    }

在气泡排序前后的图像下面:

enter image description here

1 个答案:

答案 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;
}