Временные переменные мешают алгоритму быть на месте? - PullRequest
0 голосов
/ 29 сентября 2019

Я написал алгоритм для создания последовательного списка максимумов исходного списка A, такой что a(i+1)=max(a(i),a(i+1)).

OUT OF PLACE ALG:

void conMax(int A[], int maxA[],int n)
{
    for (int i=0;i<n;i++)
    {
        if (A[i]>=A[i-1])
        {
            maxA[i]=A[i];
        }
        else
        {
            maxA[i]=A[i-1];
        }
    }
}

IN PLACE ALG:

void inConMax(int a[],int n)
{
    int temp = -INFINITY;
    for (int i=0;i<n;i++)
    {
        if(temp>a[i])
        {
            int k = temp;
            temp = a[i];
            a[i]=k;

        }
        else
        {
            temp=a[i];
        }
    }
}

Будет ли использование временных переменных внутри цикла, чтобы избежать использования другого массива (maxA), помешать моему новому алгоритму быть на месте?

input: int a [9] = {7, 5,9,23,24,6,4,19,20}

вывод: 7 7 9 23 24 24 6 19 20

...