Exercici 4 · Metodologia de la Programació UAB 2018

Tema: Apuntadors, arrays dinàmics i cost dels mètodes · Del examen Examen Segon Parcial Curs 2018-2019 (2018)

Enunciado

Exercici 4 (1 punt). Complexitat algorísmica d'elimina i buidaVector

a.

A partir del codi següent del mètode elimina de la classe Vector, determineu-ne l'ordre de complexitat algorísmica en el cas pitjor i justifiqueu la resposta:

bool Vector::elimina(int posicio)

{

bool resultat = false;

if ((posicio >= 0) && (posicio < m_nElements))

{

resultat = true;

for (int i = posicio; i < (m_nElements - 1); i++)

m_array[i] = m_array[i + 1];

m_nElements--;

if (m_nElements < (m_maxElements / 4))

{

if ((m_maxElements / 2) > TAMANY_MINIM)

{

m_maxElements /= 2;

int* aux = new int[m_maxElements];

for (int i = 0; i < m_nElements; i++)

aux[i] = m_array[i];

delete[] m_array;

m_array = aux;

}

}

}

return resultat;

}

b.

Fent ús del mètode elimina, s'implementa el mètode buidaVector següent:

bool Vector::buidaVector()

{

for (int i = 0; i < m_nElements; i++)

elimina(0);

}

Quin és l'ordre de complexitat algorísmica d'aquest nou mètode? Justifiqueu detalladament la resposta.

Enunciado: Exercici 4 · Metodologia de la Programació UAB 2018

Solución

Según los criterios oficiales de corrección

a. Ordre de complexitat algorísmica en el cas pitjor del mètode elimina

Solución: O(n)O(n)

a. Justificació de la complexitat del mètode elimina

Solución: En el cas pitjor (posició 0), el bucle de desplaçament fa n - 1 iteracions (O(n)). Si a més cal reduir memòria, es copien els n elements restants (O(n)). Per tant, el cost total en el cas pitjor és lineal: O(n).

b. Ordre de complexitat algorísmica del mètode buidaVector

Solución: O(n2)O(n^2)

b. Justificació detallada de la complexitat del mètode buidaVector

Solución: A cada pas s'incrementa i i es redueix m_nElements en 1 per elimina(0), de manera que el bucle fa aproximadament n/2 iteracions. Com que elimina(0) costa proporcionalment als elements restants (n - 2k), la suma total forma una progressió aritmètica proporcional a n², donant un cost quadràtic O(n²).

La explicación paso a paso, hecha con IA, es Premium. Premium

Resuélvelo aquí mismo: corrección automática, pistas y solución paso a paso.

‹ Exercici 1 · 2018

Más ejercicios de Apuntadors, arrays dinàmics i cost dels mètodes