Я написал алгоритм для создания последовательного списка максимумов исходного списка 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