SlideShare una empresa de Scribd logo
1 de 28
1
Modulo:
Algoritmos y
Estructuras de
datos
Curso Global Teórico
Sistemas de Información
2
Algoritmos
a) Algoritmos de
búsqueda.
1. Lineal.
2. Binaria.
b) Algoritmos de
clasificación
1. Inserción directa.
2. Selección directa.
3. Intercambio directo.
c) Algoritmos
recursivos.
1. Introducción
2. Ejemplos de
programas
recursivos.
3
Algoritmos.
 El término algoritmo, no está exclusivamente relacionado con
las matemáticas o informática. En realidad, en la vida cotidiana
empleamos algoritmos en multitud de ocasiones para resolver
diversos problemas.
 Un algoritmo, es un método para resolver un problema, más
formalmente, podemos decir que es un conjunto de reglas o
instrucciones bien definidas para la resolución de problemas.
 Esta definición puede ser extendida a: Un algoritmo es
cualquier procedimiento computacional bien definido, junto con
un conjunto especifico de datos con un margen de error
permitido, que produce un valor o conjunto de valores como
salida.
 Con las definiciones anteriores, podemos decir que un
algoritmo debe producir una salida válida para todas las
entradas permitidas.
4
Propiedades de los
algoritmos
 Todo algoritmo es independiente del lenguaje de
programación, así como de la máquina que lo ejecuta.
 Las características fundamentales de los algoritmos, son:
1. Deben ser precisos e indicar el orden de realización de
cada paso.
2. Debe estar definido, es decir, si se ejecuta dos veces, esas
dos veces se debe de obtener el mismo resultado.
3. Debe ser finito, este debe terminar en algún momento.
 La definición de un algoritmo, debe describir tres partes
importantes para procesar la información en la computadora,
tal como lo muestra la figura.
Entrada Proceso Salida
5
Estructura Básica:
 inicio
 constantes (datos inalterables)
 variables (datos alterables)
 ingresar datos (datos ingresados por el usuario que
se guardarán en las variables)
 proceso de operaciones (ejecución de algoritmo
sobre las variables y constantes)
 mostrar resultados (resultados de la operación
algorítmica)
 fin
6
a) Algoritmos de
búsqueda
7
Algoritmos de Búsqueda
 La tarea de búsqueda es una de las
operaciones más frecuentes en la
programación.
 Existen muchos algoritmos de búsqueda.
 En los algoritmos que se estudiarán a
continuación se supondrá que la colección de
datos, entre los cuales se buscará un elemento,
es fija.
8
 Supondremos que este
conjunto fijo tiene n
elementos y lo
representaremos como
un arreglo, por ejemplo:
a: array[0..n-1] of item
 Es usual que el tipo
item tenga una
estructura de registro
con un campo que
actúa como una llave.
Algoritmos de
Búsqueda
9
 La tarea consiste en hallar un elemento del
arreglo a cuyo campo clave sea igual a un cierto
argumento de búsqueda x.
 El índice resultante i, que cumple la igualdad
a[i].Llave = x, permite el acceso a otros campos
del registro localizado.
 Para concentrarnos únicamente en la tarea de
búsqueda, supondremos que el tipo item consta
sólo de la llave, es decir, es la llave.
Algoritmos de Búsqueda
10
 Cuando no se tiene más información sobre los
datos en los que se busca, lo más sencillo es
proceder de manera secuencial a través del
arreglo en busca del elemento deseado.
 Este enfoque se llama búsqueda lineal.
 Existen dos condiciones que terminan la
búsqueda:
1. Si se halla el elemento, es decir, si ai = x.
2. Si se ha rastreado todo el arreglo sin encontrar a
x.
Algoritmos de Búsqueda
11
1. Búsqueda Lineal
12
Búsqueda lineal
 Lo anterior produce el siguiente algoritmo:
i := 0;
while (i < n) and (a[i] < > x) do
i := i + 1
0 1 2 3 4 5 6
a b c d e f g
i
x =
El símbolo de mayor es >
El símbolo de menor es <
i := 0;
mientras (i < n) y (a[i] < > x) haz
i := i + 1
13
Búsqueda lineal
 La búsqueda termina
sólo si la condición de
la cláusula while es
falsa.
 Cuando se encuentra
una concordancia, se
halla la que tiene el
índice menor, es decir,
el primer elemento que
concuerda en la
secuencia.
x =
0 1
8
 i
1 1
4
2 2
5
3 1
2
4 3
4
5 9
El símbolo de mayor es >
El símbolo de menor es <
14
Búsqueda lineal
 Si se cumple i = n, Y no existe concordancia, entonces
el registro que se esta buscando no existe.
 La terminación del ciclo es segura, ya que en cada
etapa del proceso se incrementa i, por lo que aunque no
exista concordancia se debe llegar al límite n después
de un número finito de iteraciones (pasos).
15
Búsqueda Lineal
Con Centinela
16
Búsqueda lineal con
centinela
 El algoritmo puede hacerse más eficiente
simplificando la expresión booleana de dos
factores, a uno solo que determine la
concordancia.
 Para garantizar la concordancia se debe colocar
un elemento “adicional” en el arreglo que
contenga al elemento buscado x.
 A este elemento adicional se le conoce como
centinela, ya que previene que la búsqueda
exceda el límite del índice.
17
Búsqueda lineal con
centinela
 El algoritmo de búsqueda lineal con centinela es
el siguiente:
a[n] := x;
i := 0;
while a[i] < > x do
i := i + 1
 Evidentemente i = n implica que no se encontró
concordancia (excepto la del centinela).
El símbolo de mayor es >
El símbolo de menor es <
18
2. Búsqueda Binaria
19
Búsqueda binaria
 Una búsqueda puede hacerse más efectiva si los datos
están ordenados (por ejemplo, ascendentemente).
 La idea clave consiste en inspeccionar un elemento
elegido al azar, por ejemplo am, y compararlo con el
argumento de búsqueda x.
 Si am = x, la búsqueda termina, si am es menor que x,
se infiere que todos los elemento con índices menores
que, o iguales a m pueden ser descartados.
 Lo anterior produce el siguiente algoritmo llamado
búsqueda binaria. Este algoritmo utiliza dos variables de
índice, L y R, que marcan los extremos izquierdo (Left) y
derecho (Right) de la sección del arreglo a en los cuales
todavía puede hallarse un elemento.
20
Búsqueda binaria
L := 0; R := n; found := FALSE;
while (L <= R) do
Begin
m := cualquier valor entre L y R
m:=(L+R)div2
if a[m] = x
then found := true
else if a[m] < x
then L := m + 1
else R := m – 1
end.
0 1 2 3 4 5 6
m 3 4 5 6 7 8 9

L

R
x =
El símbolo de mayor es >
El símbolo de menor es <
21
Búsqueda binaria
 La elección de m es arbitraria y la forma en
como se escoge no afecta la corrección del
algoritmo.
 Sin embargo, la manera en que se elige m
puede tener influencia sobre la efectividad del
algoritmo.
 El objetivo debe ser el de eliminar tantos
elementos como sea posible en cada etapa de
búsquedas posteriores.
22
Búsqueda Binaria
Mejorada
23
Búsqueda binaria
Mejorada
 La solución óptima consiste en elegir el elemento del
medio, ya que esto elimina, en cualquier caso, la mitad
de la sección del arreglo por buscar.
 Este algoritmo ofrece una mejora drástica sobre la
búsqueda lineal, donde el número estimado de
comparaciones es n / 2.
 La eficiencia puede mejorarse un poco intercambiando
las cláusulas if.
 La prueba de la igualdad debe dejarse en segundo
término, ya que se cumple sólo una vez y ocasiona la
terminación del proceso.
 Se puede aumentar la eficiencia del algoritmo si se
simplifica la condición de terminación del ciclo.
24
Búsqueda binaria
Mejorada
 Un algoritmo de búsqueda binaria
más eficiente es el siguiente:
L := 0; R := n;
while (L <= R) do
begin
m := (L + R) div 2;
if a[m] < x
then L := m + 1
else R := m
end
end
n 0 1 2 3 4 5 6
a 3 4 5 6 7 8 9

L

m

R
x =
El símbolo de mayor es >
El símbolo de menor es <
25
Ejemplo
L := 0; R := n;
while (L < R) do
begin
m := (L + R) div 2;
if a[m] < x
then
L := m + 1
else R := m
end
n 0 1 2 3 4 5 6
a 3 4 5 6 7 8 9

L

m

R
1era vuelta
m=0+6=6/2=3 m=3
x=4
am=6
6<4 NO
else R:=m
26
2da Vuelta
L := 0; R := n;
while (L < R) do
begin
m := (L + R) div 2;
if a[m] < x
then
L := m + 1
else R := m
end
n 0 1 2 3 4 5 6
a 3 4 5 6 7 8 9

L

R
m=0+3=3/2=1 m=1
x=4
am=4
4=4
am concuerda con
x
concordancia
27
Búsqueda binaria
Mejorada
 La iteración termina cuando L = R.
 Si R = n, entonces no existe concordancia.
 Por lo tanto se necesita una comparación final para
verificar que a[R] = x.
 En contraste con el primer algoritmo de búsqueda
binaria presentado, el último algoritmo (al igual que la
búsqueda lineal) encuentra el elemento de
concordancia con el índice menor.
28
Vamos con los difíciles

Más contenido relacionado

La actualidad más candente

Algoritmos Y Diagramas De Flujo
Algoritmos Y Diagramas De FlujoAlgoritmos Y Diagramas De Flujo
Algoritmos Y Diagramas De Flujo
J Luis
 
Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo
ikky2345
 
Condiciones kuhn tucker y lagrange
Condiciones kuhn tucker y lagrangeCondiciones kuhn tucker y lagrange
Condiciones kuhn tucker y lagrange
Andreina Arteaga
 

La actualidad más candente (17)

Algoritmos Y Diagramas De Flujo
Algoritmos Y Diagramas De FlujoAlgoritmos Y Diagramas De Flujo
Algoritmos Y Diagramas De Flujo
 
Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo
 
Diagrama de Flujo y Pseudocodigo
Diagrama de Flujo y PseudocodigoDiagrama de Flujo y Pseudocodigo
Diagrama de Flujo y Pseudocodigo
 
Matematica 1
Matematica 1Matematica 1
Matematica 1
 
Derivadas segunda parte
Derivadas segunda parteDerivadas segunda parte
Derivadas segunda parte
 
Pagina web Análisis Numérico
Pagina web Análisis NuméricoPagina web Análisis Numérico
Pagina web Análisis Numérico
 
Condiciones kuhn tucker y lagrange
Condiciones kuhn tucker y lagrangeCondiciones kuhn tucker y lagrange
Condiciones kuhn tucker y lagrange
 
Gauss
GaussGauss
Gauss
 
Slideshare analisis numerico
Slideshare analisis numericoSlideshare analisis numerico
Slideshare analisis numerico
 
Fundamentos matematicos para la criptografia asimetrica
Fundamentos matematicos para la criptografia asimetricaFundamentos matematicos para la criptografia asimetrica
Fundamentos matematicos para la criptografia asimetrica
 
Método Runge Kutta. Computación Aplicada
Método Runge Kutta. Computación AplicadaMétodo Runge Kutta. Computación Aplicada
Método Runge Kutta. Computación Aplicada
 
TRABAJO DE MATE
TRABAJO DE MATETRABAJO DE MATE
TRABAJO DE MATE
 
Método gráfico, Método de bisección y Método de la regla falsa
Método gráfico, Método de bisección  y Método de la regla falsa Método gráfico, Método de bisección  y Método de la regla falsa
Método gráfico, Método de bisección y Método de la regla falsa
 
Tarea 6
Tarea 6Tarea 6
Tarea 6
 
Teoria de Numeros
Teoria de Numeros Teoria de Numeros
Teoria de Numeros
 
Tarea 6
Tarea 6Tarea 6
Tarea 6
 
Derivacion implicita
Derivacion implicitaDerivacion implicita
Derivacion implicita
 

Destacado (20)

Actividad 1.Mi cultura, mi región y yo
Actividad 1.Mi cultura, mi región y yoActividad 1.Mi cultura, mi región y yo
Actividad 1.Mi cultura, mi región y yo
 
Elviajeentren
ElviajeentrenElviajeentren
Elviajeentren
 
Ensayo final20.
Ensayo final20.Ensayo final20.
Ensayo final20.
 
Humberto roberto bravo zambrano
Humberto roberto bravo zambranoHumberto roberto bravo zambrano
Humberto roberto bravo zambrano
 
Componentes de la red iberico
Componentes de  la red   ibericoComponentes de  la red   iberico
Componentes de la red iberico
 
Camina seguro
Camina seguroCamina seguro
Camina seguro
 
Ingles
InglesIngles
Ingles
 
encuentra la salida
encuentra la salidaencuentra la salida
encuentra la salida
 
Humberto roberto bravo zambrano
Humberto roberto bravo zambranoHumberto roberto bravo zambrano
Humberto roberto bravo zambrano
 
Perfumede mujer x_1_cabeza
Perfumede mujer x_1_cabezaPerfumede mujer x_1_cabeza
Perfumede mujer x_1_cabeza
 
Bloque cierre
Bloque cierreBloque cierre
Bloque cierre
 
Boletin de prensa rendición pública de cuentas
Boletin de prensa   rendición pública de cuentasBoletin de prensa   rendición pública de cuentas
Boletin de prensa rendición pública de cuentas
 
movimiento camaras cine
movimiento camaras cinemovimiento camaras cine
movimiento camaras cine
 
Por qué las diferencias
Por qué las diferenciasPor qué las diferencias
Por qué las diferencias
 
Fundación Diseño de Interacción | Presentación 2015
Fundación Diseño de Interacción | Presentación 2015Fundación Diseño de Interacción | Presentación 2015
Fundación Diseño de Interacción | Presentación 2015
 
Subordinadas
SubordinadasSubordinadas
Subordinadas
 
Guerra de successió
Guerra de successióGuerra de successió
Guerra de successió
 
Expocicion arturo
Expocicion arturoExpocicion arturo
Expocicion arturo
 
newlwttwer nov2012
newlwttwer nov2012newlwttwer nov2012
newlwttwer nov2012
 
Plazas
PlazasPlazas
Plazas
 

Similar a 2.algoritmos

20 algoritmos
20 algoritmos20 algoritmos
20 algoritmos
diego
 
Aritmética Modular
Aritmética ModularAritmética Modular
Aritmética Modular
vvillegass
 
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx
YeshuaCamposChvez
 
Diagramas de-flujo.
Diagramas de-flujo.Diagramas de-flujo.
Diagramas de-flujo.
Uriel Lopez
 

Similar a 2.algoritmos (20)

Divide y Vencerás
Divide y VencerásDivide y Vencerás
Divide y Vencerás
 
Teoría De La Complejidad Algoritmica
Teoría De La Complejidad AlgoritmicaTeoría De La Complejidad Algoritmica
Teoría De La Complejidad Algoritmica
 
20 algoritmos
20 algoritmos20 algoritmos
20 algoritmos
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busqueda
 
Mpinning Gy Alg9(Conteo)
Mpinning Gy Alg9(Conteo)Mpinning Gy Alg9(Conteo)
Mpinning Gy Alg9(Conteo)
 
Inf 2316(proyecto)
Inf 2316(proyecto)Inf 2316(proyecto)
Inf 2316(proyecto)
 
Aritmética Modular
Aritmética ModularAritmética Modular
Aritmética Modular
 
Informe aritmetica modular
Informe aritmetica modularInforme aritmetica modular
Informe aritmetica modular
 
Aritmetica Modular
Aritmetica ModularAritmetica Modular
Aritmetica Modular
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Informe analisis de algoritmos (mitad de cuadrado)
Informe analisis de algoritmos (mitad de cuadrado)Informe analisis de algoritmos (mitad de cuadrado)
Informe analisis de algoritmos (mitad de cuadrado)
 
Informe
InformeInforme
Informe
 
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx
 
Notación Asintótica
Notación AsintóticaNotación Asintótica
Notación Asintótica
 
Introducción a los Métodos Numéricos
Introducción a los Métodos NuméricosIntroducción a los Métodos Numéricos
Introducción a los Métodos Numéricos
 
Complejidad Computacional
Complejidad ComputacionalComplejidad Computacional
Complejidad Computacional
 
Gauss
GaussGauss
Gauss
 
Algebra morelys lugo2
Algebra morelys lugo2Algebra morelys lugo2
Algebra morelys lugo2
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Diagramas de-flujo.
Diagramas de-flujo.Diagramas de-flujo.
Diagramas de-flujo.
 

2.algoritmos

  • 1. 1 Modulo: Algoritmos y Estructuras de datos Curso Global Teórico Sistemas de Información
  • 2. 2 Algoritmos a) Algoritmos de búsqueda. 1. Lineal. 2. Binaria. b) Algoritmos de clasificación 1. Inserción directa. 2. Selección directa. 3. Intercambio directo. c) Algoritmos recursivos. 1. Introducción 2. Ejemplos de programas recursivos.
  • 3. 3 Algoritmos.  El término algoritmo, no está exclusivamente relacionado con las matemáticas o informática. En realidad, en la vida cotidiana empleamos algoritmos en multitud de ocasiones para resolver diversos problemas.  Un algoritmo, es un método para resolver un problema, más formalmente, podemos decir que es un conjunto de reglas o instrucciones bien definidas para la resolución de problemas.  Esta definición puede ser extendida a: Un algoritmo es cualquier procedimiento computacional bien definido, junto con un conjunto especifico de datos con un margen de error permitido, que produce un valor o conjunto de valores como salida.  Con las definiciones anteriores, podemos decir que un algoritmo debe producir una salida válida para todas las entradas permitidas.
  • 4. 4 Propiedades de los algoritmos  Todo algoritmo es independiente del lenguaje de programación, así como de la máquina que lo ejecuta.  Las características fundamentales de los algoritmos, son: 1. Deben ser precisos e indicar el orden de realización de cada paso. 2. Debe estar definido, es decir, si se ejecuta dos veces, esas dos veces se debe de obtener el mismo resultado. 3. Debe ser finito, este debe terminar en algún momento.  La definición de un algoritmo, debe describir tres partes importantes para procesar la información en la computadora, tal como lo muestra la figura. Entrada Proceso Salida
  • 5. 5 Estructura Básica:  inicio  constantes (datos inalterables)  variables (datos alterables)  ingresar datos (datos ingresados por el usuario que se guardarán en las variables)  proceso de operaciones (ejecución de algoritmo sobre las variables y constantes)  mostrar resultados (resultados de la operación algorítmica)  fin
  • 7. 7 Algoritmos de Búsqueda  La tarea de búsqueda es una de las operaciones más frecuentes en la programación.  Existen muchos algoritmos de búsqueda.  En los algoritmos que se estudiarán a continuación se supondrá que la colección de datos, entre los cuales se buscará un elemento, es fija.
  • 8. 8  Supondremos que este conjunto fijo tiene n elementos y lo representaremos como un arreglo, por ejemplo: a: array[0..n-1] of item  Es usual que el tipo item tenga una estructura de registro con un campo que actúa como una llave. Algoritmos de Búsqueda
  • 9. 9  La tarea consiste en hallar un elemento del arreglo a cuyo campo clave sea igual a un cierto argumento de búsqueda x.  El índice resultante i, que cumple la igualdad a[i].Llave = x, permite el acceso a otros campos del registro localizado.  Para concentrarnos únicamente en la tarea de búsqueda, supondremos que el tipo item consta sólo de la llave, es decir, es la llave. Algoritmos de Búsqueda
  • 10. 10  Cuando no se tiene más información sobre los datos en los que se busca, lo más sencillo es proceder de manera secuencial a través del arreglo en busca del elemento deseado.  Este enfoque se llama búsqueda lineal.  Existen dos condiciones que terminan la búsqueda: 1. Si se halla el elemento, es decir, si ai = x. 2. Si se ha rastreado todo el arreglo sin encontrar a x. Algoritmos de Búsqueda
  • 12. 12 Búsqueda lineal  Lo anterior produce el siguiente algoritmo: i := 0; while (i < n) and (a[i] < > x) do i := i + 1 0 1 2 3 4 5 6 a b c d e f g i x = El símbolo de mayor es > El símbolo de menor es < i := 0; mientras (i < n) y (a[i] < > x) haz i := i + 1
  • 13. 13 Búsqueda lineal  La búsqueda termina sólo si la condición de la cláusula while es falsa.  Cuando se encuentra una concordancia, se halla la que tiene el índice menor, es decir, el primer elemento que concuerda en la secuencia. x = 0 1 8  i 1 1 4 2 2 5 3 1 2 4 3 4 5 9 El símbolo de mayor es > El símbolo de menor es <
  • 14. 14 Búsqueda lineal  Si se cumple i = n, Y no existe concordancia, entonces el registro que se esta buscando no existe.  La terminación del ciclo es segura, ya que en cada etapa del proceso se incrementa i, por lo que aunque no exista concordancia se debe llegar al límite n después de un número finito de iteraciones (pasos).
  • 16. 16 Búsqueda lineal con centinela  El algoritmo puede hacerse más eficiente simplificando la expresión booleana de dos factores, a uno solo que determine la concordancia.  Para garantizar la concordancia se debe colocar un elemento “adicional” en el arreglo que contenga al elemento buscado x.  A este elemento adicional se le conoce como centinela, ya que previene que la búsqueda exceda el límite del índice.
  • 17. 17 Búsqueda lineal con centinela  El algoritmo de búsqueda lineal con centinela es el siguiente: a[n] := x; i := 0; while a[i] < > x do i := i + 1  Evidentemente i = n implica que no se encontró concordancia (excepto la del centinela). El símbolo de mayor es > El símbolo de menor es <
  • 19. 19 Búsqueda binaria  Una búsqueda puede hacerse más efectiva si los datos están ordenados (por ejemplo, ascendentemente).  La idea clave consiste en inspeccionar un elemento elegido al azar, por ejemplo am, y compararlo con el argumento de búsqueda x.  Si am = x, la búsqueda termina, si am es menor que x, se infiere que todos los elemento con índices menores que, o iguales a m pueden ser descartados.  Lo anterior produce el siguiente algoritmo llamado búsqueda binaria. Este algoritmo utiliza dos variables de índice, L y R, que marcan los extremos izquierdo (Left) y derecho (Right) de la sección del arreglo a en los cuales todavía puede hallarse un elemento.
  • 20. 20 Búsqueda binaria L := 0; R := n; found := FALSE; while (L <= R) do Begin m := cualquier valor entre L y R m:=(L+R)div2 if a[m] = x then found := true else if a[m] < x then L := m + 1 else R := m – 1 end. 0 1 2 3 4 5 6 m 3 4 5 6 7 8 9  L  R x = El símbolo de mayor es > El símbolo de menor es <
  • 21. 21 Búsqueda binaria  La elección de m es arbitraria y la forma en como se escoge no afecta la corrección del algoritmo.  Sin embargo, la manera en que se elige m puede tener influencia sobre la efectividad del algoritmo.  El objetivo debe ser el de eliminar tantos elementos como sea posible en cada etapa de búsquedas posteriores.
  • 23. 23 Búsqueda binaria Mejorada  La solución óptima consiste en elegir el elemento del medio, ya que esto elimina, en cualquier caso, la mitad de la sección del arreglo por buscar.  Este algoritmo ofrece una mejora drástica sobre la búsqueda lineal, donde el número estimado de comparaciones es n / 2.  La eficiencia puede mejorarse un poco intercambiando las cláusulas if.  La prueba de la igualdad debe dejarse en segundo término, ya que se cumple sólo una vez y ocasiona la terminación del proceso.  Se puede aumentar la eficiencia del algoritmo si se simplifica la condición de terminación del ciclo.
  • 24. 24 Búsqueda binaria Mejorada  Un algoritmo de búsqueda binaria más eficiente es el siguiente: L := 0; R := n; while (L <= R) do begin m := (L + R) div 2; if a[m] < x then L := m + 1 else R := m end end n 0 1 2 3 4 5 6 a 3 4 5 6 7 8 9  L  m  R x = El símbolo de mayor es > El símbolo de menor es <
  • 25. 25 Ejemplo L := 0; R := n; while (L < R) do begin m := (L + R) div 2; if a[m] < x then L := m + 1 else R := m end n 0 1 2 3 4 5 6 a 3 4 5 6 7 8 9  L  m  R 1era vuelta m=0+6=6/2=3 m=3 x=4 am=6 6<4 NO else R:=m
  • 26. 26 2da Vuelta L := 0; R := n; while (L < R) do begin m := (L + R) div 2; if a[m] < x then L := m + 1 else R := m end n 0 1 2 3 4 5 6 a 3 4 5 6 7 8 9  L  R m=0+3=3/2=1 m=1 x=4 am=4 4=4 am concuerda con x concordancia
  • 27. 27 Búsqueda binaria Mejorada  La iteración termina cuando L = R.  Si R = n, entonces no existe concordancia.  Por lo tanto se necesita una comparación final para verificar que a[R] = x.  En contraste con el primer algoritmo de búsqueda binaria presentado, el último algoritmo (al igual que la búsqueda lineal) encuentra el elemento de concordancia con el índice menor.
  • 28. 28 Vamos con los difíciles