Luisa Fernanda Mosquera Deisy Jhoana Andrade Edinson Solarte Manuel A. Plaza 1. Algoritmo 0. Inicio 1. for (i=1; i<TAM; i++) 2. for j=0 ; j<TAM - 1; j++) 3. if (lista[j] > lista[j+1]) 4. temp = lista[j]; 5. lista[j] = lista[j+1]; 6. lista[j+1] = temp; 7. fin 0. Inicia el programa 1.Primer ciclo indica el numero de iteraciones que se van ha realizar para ordenar el arreglo. Este numero ya esta definido, por ello no deja de recorrer el arreglo si esta ordenado. 2. Segundo ciclo anidado que recorre el arreglo internamente , para iniciar el ordenamiento. 3. Compara las posiciones contiguas del arreglo , si esta condición se cumple se realiza el intercambio. 4. Asigna el valor de la posición j de arreglo a una temporal. 5. Asigna el valor de la siguiente a la posición J. 6. Asigna el valor de la temporal a J + 1. 7. Terminar. 2. Análisis del algoritmo 0. Inicio 1. for (i=1; i<TAM; i++) 2. for( j=1 ; j<TAM ; j++) 3. if (lista[j] > lista[j+1]) 4. temp=lista[j]; 5. lista[j]=lista[j+1]; 6. lista[j+1] = temp; 7. fin Costo Veces C1 n C2 C3 C4 C5 C6 (*)n(n-1) (n-1)(n-1) (n-1)(n-1) (n-1)(n-1) (n-1)(n-1) T (n) =C1(n)+C2(n-1)(n)+C3(n-1)(n-1)+C4(n-1)(n-1))+C5(n-1)(n-1)) +C6(n-1)(n-1) T (n) = (C2+C3+C4+C5+C6)n2 + (C1-C2-2C3-2C4-2C5-2C6)n + (C3+C4+C5+C6) T (n) = a.n2 +b.n+ c f(n) =an2+bn+c 3. Ejemplo de Ejecución 1. Ejemplo de ejecución en caso promedio Esta es nuestra lista: 4 - 3 - 5 - 2 - 1 Tenemos 5 elementos. Es decir, TAM toma el valor 5. Comenzamos comparando el primero con el segundo elemento. 4 es mayor que 3, así que intercambiamos. Ahora tenemos: 3-4-5-2-1 Ahora comparamos el segundo con el tercero: 4 es menor que 5, así que no hacemos nada. Continuamos con el tercero y el cuarto: 5 es mayor que 2. Intercambiamos y obtenemos: 3-4-2-5-1 Comparamos el cuarto y el quinto: 5 es mayor que 1. Intercambiamos nuevamente: 3-4-2-1-5 Repitiendo este proceso vamos obteniendo los siguientes resultados: 3-2-1-4-5 2-1-3-4-5 1-2-3-4-5 • Mejor Caso T(n)=C1.n+C2(n2- n)+0+0+0+0 T(n)=C1.n + C2n2- C2.n = (C2) n2 + (C1- C2) n F(n)= a.n2 + b.n 5. Cotas F(n)= Ω(n2) • Peor Caso T (n) = C1n2 + C2.n + C3 F (n) = an2 + b.n + c Lim = an2 + b.n + c = Lim an2 + b.n + c = Lim a + Lim b + Lim c n->α n2 n->α n2 n2 n2 n->α n->α n n->α n2 =a Por la regla del limite decimos que: F (n) = O(n2) y se cumple para F(n) = θ(n2) 6. Simulación del comportamiento Cotas 30,000 R2 = 1 Tiempo de ejecucion 25,000 20,000 15,000 Peor Caso Mejor caso 10,000 Caso Promedio Polinómica (Peor Caso) 5,000 0,000 5000 10000 15000 20000 25000 30000 N° Datos 35000 40000 45000 50000 7. Posibles Variaciones del Algoritmo ALGORITMO MEJORADO 1. Int sw; 2. for (i=1; i<TAM; i++) 3. Sw=0; 4. for j=1 ; j<TAM –i+1; j++) 5. if (lista[j] > lista[j+1]) 6. sw=1; 7. temp = lista[j]; 8. lista[j] = lista[j+1]; 9. lista[j+1] = temp; 10. if (sw==0) 11. i=TAM; 50 00 10 00 0 15 00 0 20 00 0 25 00 0 30 00 0 35 00 0 40 00 0 45 00 0 50 00 0 Tiempo de ejecución Comportamiento 20 18 16 14 12 serie 1 10 Serie2 8 Serie3 6 4 2 0 Nº Datos