从早期日期到“更年轻”日期排序日期数组

时间:2017-04-08 10:04:12

标签: c++ bubble-sort

我正在编写一种方法,按照从“最老”到“最年轻”的顺序对日期进行排序。

阵列的第一个单元格将是最早的日期。

空单元格(包含零)将位于数组的末尾。

功能:

  • firstfree()日期数组中的第一个日期为“零”,如果它为非零,则返回-1。
  • isfree() - >如果日期为“零”则返回true

问题:它不会更改“从最老到最年轻”的所有日期

void Calendar::sortDates()
{
    MyDate *Date_S;
    MyDate zero;
    int index = 0;
    int sumDigit = 0;
    Date_S = new MyDate[29]; // max 30 days by defention of exercise
    if (this->firstFree() == -1) //array of "zero"
    {
        return;
    }

    else
    {
        for (int i = 0; i<29; i++)  // moving dates not "zero" to Dates_S
            if (this->isFree(i + 1) == false)
            {
                Date_S[index] = Dates[i];
                index++;
            }


        for (int i = 0; i < 29; i++)
        {
            for (int j = 0; j < 29 - j - i; j++)
            {
                if (Date_S[j].isBefore(Dates[j + 1]) == false) // bubble sort of Dates_S in 
                {
                    zero = Date_S[j];
                    Date_S[j] = Date_S[j + 1];
                    Date_S[j + 1] = zero;
                }
            }
        }
        for (index; index < 30; index++) // copying "zero" dates to the end of Dates_S
        {
            Date_S[index].setZero();
        }
        for (int i = 0; i < 30; i++) // shallow copy , just integers
        {
            Dates[i] = Date_S[i];
        }

    }

}

0 个答案:

没有答案