Divide y vencerás
DYV
El método está basado en la resolución recursiva de un problema dividiéndolo en dos o más subproblemas de igual tipo o similar.
Búsqueda binaria
Buscar el número 18 en la siguiente lista ORDENADA de números:
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23]
public static int busquedaBinaria(int vector[], int dato){�
….
� }
public static int busquedaBinaria(int vector[], int dato){� int centro, inf = 0, sup = n - 1;
� }
public static int busquedaBinaria(int vector[], int dato){� int centro, inf = 0, sup = n - 1;
while(inf <= sup) {� � }
� }
public static int busquedaBinaria(int vector[], int dato){� int centro, inf = 0, sup = n - 1;
while(inf <= sup) {� centro = ( sup + inf ) / 2;� }
� }
public static int busquedaBinaria(int vector[], int dato){� int centro, inf = 0, sup = n - 1;
while(inf <= sup) {� centro = ( sup + inf ) / 2;
if(vector[centro] == dato) return centro;
� }
� }
public static int busquedaBinaria(int vector[], int dato){� int centro, inf = 0, sup = n - 1;
while(inf <= sup) {� centro = ( sup + inf ) / 2;
if(vector[centro] == dato) return centro;
else if(dato < vector [centro] ){� sup = centro - 1;� }
� }
� }
public static int busquedaBinaria(int vector[], int dato){� int centro, inf = 0, sup = n - 1;
while(inf <= sup) {� centro = ( sup + inf ) / 2;
if(vector[centro] == dato) return centro;
else if(dato < vector [centro] ){� sup = centro - 1;� } else {� inf = centro + 1;� }� }
� }
public static int busquedaBinaria(int vector[], int dato){� int centro, inf = 0, sup = n - 1;
while(inf <= sup) {� centro = ( sup + inf ) / 2;
if(vector[centro] == dato) return centro;
else if(dato < vector [centro] ){� sup = centro - 1;� } else {� inf = centro + 1;� }� }
return -1;� }
Divide y vencerás
Diseño e implementación
Mergesort
Ordenamiento por mezcla
6 | 5 | 3 | 1 | 8 | 7 | 2 | 4 |
1 | 3 | 5 | 6 | 2 | 4 | 7 | 8 | 9 | 11 | 13 | 17 | 10 | 12 | 14 | 20 |
| | | | | | | | | | | | | | | |
inf = 0, sup = 7, med = 3
Exponenciación Binaria
Ejercicios