1. Para cada uno de los siguientes segmentos de algoritmos analice sus complejidades usando notación O grande

A)

a)
Leer(a)
n ← a*a
c ← 0
MIENTRAS (a>1) HACER
	a ← a/2
	PARA i=1,n HACER
	c ← c*2
Escribir(c)

Complejidad: O( log(n) * n² )

B)

k ← n
PARA i=1,n HACER
b ← i
	PARA k=k,b (paso=-1) HACER
			SI a(k-1)>a(k) ENTONCES
					Aux ← a(k-1)
					a(k-1) ← a(k)
					a(k) ← Aux

Complejidad: o(n²)

C)

public static int maximo(int x, int y){
	    if (x >= y) {
	        return x;
	    } else {
	        return y;
	    }
	}

Complejidad: O(1)

D)

public static double potencia(double x, int n){
	    double result = 1.0;
	    for (int i = 0; i < n; i++) {
	        result *= x;
	    }
	    return result;
	}

Complejidad: O(n)

E)

public static void alumnos(Alumno[] a) { 
	    int i = 0;
	    while (i < a.length) {
	  	System.out.println(a.getNombre()+" "+a.getApellido());
	        i++;
	    }
	}

Complejidad: O (n)