Dado el siguiente algoritmo que recibe como parámetro un arreglo a de tamaño n de enteros distintos, interesa calcular el costo en el mejor (\( T_B(n) \)) y peor (\( T_W(n) \)) caso, considerando simultáneamente las dos siguientes operaciones elementales:
-La comparación entre elementos de a con costo c1.
-La asignación en el arrego a con costo c2.
Se pide:
1) Indique en forma genérica las entradas de tamaño n que maximizan el costo y luego calcule el costo del peor caso.
2) Indique en forma genérica las entradas de tamaño n que minimizan el costo y luego calcule el costo del mejor caso.
for(int=1; i<n-2; i=i+4){
if (a[i] > a[i+2])
swap(a, i-1, i+1);
}
for(int=0; i<n; i=i++){
for(j=i+1; j<=n; i++)
if (a[i] > a[j])
swap(a, i, j);
}
void swap (int* a; int i; int j){
int aux=a[i];
a[i]=a[j];
a[j]=aux;
}
Para el apartado 2) es claro que el mejor caso se da cuando el arreglo está ordenado. Pero para el apartado 1), ¿cuándo se da el peor caso? ¿Será cuando el arreglo está ordenado en sentido inverso? No lo veo tan claro.