【问题标题】:C++ Struct Bubble SortingC++ 结构冒泡排序
【发布时间】:2020-02-06 03:28:50
【问题描述】:

我必须仅使用 iostream 和 fstream 对 C++ 结构进行冒泡排序,但似乎出了点问题(请参阅下面的输入和输出)。

void sortCarsByPrice(Cars carsArray[])
{
    int index1;
    int index2;
    int index3;
    int swap;
    int yearTemp;
    char makeTemp;
    char modelTemp;
    float priceTemp;
    int availTemp;
    do
    {
        swap = 0;
        for (index1 = 0; index1 < 5; index1++)
        {
            if (carsArray[index1].price > carsArray[index1 + 1].price)
            {
                yearTemp = carsArray[index1].year;
                carsArray[index1].year = carsArray[index1 + 1].year;
                carsArray[index1 + 1].year = yearTemp;

                for (index2 = 0; carsArray[index1].make[index2] != '\0' && carsArray[index1 + 1].make[index2] != '\0'; index2++)
                {
                    makeTemp = carsArray[index1].make[index2];
                    carsArray[index1].make[index2] = carsArray[index1 + 1].make[index2];
                    carsArray[index1 + 1].make[index2] = makeTemp;
                }

                for (index3 = 0; carsArray[index1].model[index3] != '\0' && carsArray[index1 + 1].model[index3] != '\0'; index3++)
                {
                    modelTemp = carsArray[index1].model[index3];
                    carsArray[index1].model[index3] = carsArray[index1 + 1].model[index3];
                    carsArray[index1 + 1].model[index3] = modelTemp;
                }

                priceTemp = carsArray[index1].price;
                carsArray[index1].price = carsArray[index1 + 1].price;
                carsArray[index1 + 1].price = priceTemp;

                availTemp = carsArray[index1].available;
                carsArray[index1].available = carsArray[index1 + 1].available;
                carsArray[index1 + 1].available = availTemp;

                swap += 1;
            }
        }
    }
    while (swap != 0);
    cout << "SORTED!" << endl;
    return; 

}

输入:

    0 2014 Toyota Tacoma $115.12 0
    1 2015 Ford Fusion $90.89 1
    2 2009 Dodge Neon $45.25 0
    3 2015 Ford F150 $112.83 1
    4 2016 Subaru Outback $71.27 1

输出:(排序后)

0 999984304 �yota Ծ0#on $-1.84172e+33 32566
1 2009 Dodg Neonma $45.25 0
2 2016 Subae Outb $71.27 1
3 2015 Ford Fusi $90.89 1
4 2015 Fordru F150U�� $112.83 1

【问题讨论】:

    标签: c++ sorting struct iostream bubble-sort


    【解决方案1】:

    如果您的数组中有 5 个元素,并且您使用 index1 + 1 作为循环内的索引,那么您只希望 index1 上升到 4。如所写,您允许 index1 上升到 5,这意味着index1 + 1 是 6,大概是在数组的末尾。

    更好的是,您可能希望在函数中添加一个附加参数,即数组中元素的数量,而不是在排序函数中间添加一个神秘(且不正确)的 5。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-26
      • 2018-11-13
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 2017-01-24
      • 1970-01-01
      • 2014-02-25
      相关资源
      最近更新 更多