Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Busqueda Binaria

Descargar como txt, pdf o txt
Descargar como txt, pdf o txt
Está en la página 1de 9

B�squeda binaria

Ir a la navegaci�nIr a la b�squeda
En ciencias de la computaci�n y matem�ticas, la b�squeda binaria, tambi�n conocida
como b�squeda de intervalo medio1? o b�squeda logar�tmica,2? es un algoritmo de
b�squeda que encuentra la posici�n de un valor en un array ordenado.3?4? Compara el
valor con el elemento en el medio del array, si no son iguales, la mitad en la cual
el valor no puede estar es eliminada y la b�squeda contin�a en la mitad restante
hasta que el valor se encuentre.

La b�squeda binaria es computada en el peor de los casos en un tiempo logar�tmico,


realizando {\displaystyle O{\bigl (}\log n{\bigr )}}{\displaystyle O{\bigl (}\log
n{\bigr )}} comparaciones, donde n es el n�mero de elementos del arreglo y log es
el logaritmo. La b�squeda binaria requiere solamente O(1) en espacio, es decir, que
el espacio requerido por el algoritmo es el mismo para cualquier cantidad de
elementos en el array.5? Aunque estructuras de datos especializadas en la b�squeda
r�pidas como las tablas hash pueden ser m�s eficientes, la b�squeda binaria se
aplica a un amplio rango de problemas de b�squeda.

Aunque la idea es simple, implementar la b�squeda binaria correctamente requiere


atenci�n a algunos detalles como su condici�n de parada y el c�lculo del punto
medio de un intervalo.

Existen numerosas variaciones de la b�squeda binaria. Una variaci�n particular


(cascada fraccional) acelera la b�squeda binaria para un mismo valor en m�ltiples
arreglos.

�ndice
1 Algoritmo
1.1 Procedimiento
1.2 Coincidencias aproximadas
2 Rendimiento
3 Comparaci�n de la b�squeda binaria con otros esquemas
3.1 Hashing
3.2 �rboles
3.3 B�squeda lineal
3.4 Aproximaciones mixtas
3.5 Algoritmos de clasificaci�n
3.6 Otras estructuras de datos
4 Variaciones
4.1 B�squeda binaria uniforme
4.2 B�squeda Fibonacci
4.3 B�squeda exponencial
4.4 B�squeda de interpolaci�n
4.5 Cascada fraccional
5 Historia
6 Problemas de implementaci�n
7 Soporte de biblioteca
8 V�ase tambi�n
9 Notas y referencias
9.1 Notas y citas
9.2 Trabajos
10 Enlaces externos
Algoritmo
La b�squeda binaria funciona en arreglos ordenados. La b�squeda binaria comienza
por comparar el elemento del medio del arreglo con el valor buscado. Si el valor
buscado es igual al elemento del medio, su posici�n en el arreglo es retornada. Si
el valor buscado es menor o mayor que el elemento del medio, la b�squeda continua
en la primera o segunda mitad, respectivamente, dejando la otra mitad fuera de
consideraci�n.

Procedimiento
Dado un arreglo A de n elementos con valores A0 ... An-1, ordenados tal que A0
= ... = An-1, y un valor buscado T, el siguiente procedimiento usa b�squeda binaria
para encontrar el �ndice de T en A.

Asignar 0 a L y a R (n - 1).
Si L > R, la b�squeda termina sin encontrar el valor.
Sea m (la posici�n del elemento del medio) igual a la parte entera de (L + R)?/?2.
Si Am < T, igualar L a m + 1 e ir al paso 2.
Si Am > T, igualar R a m � 1 e ir al paso 2.
Si Am = T, la b�squeda termin�, retornar m.
Este procedimiento iterativo mantiene los l�mites de la b�squeda mediante dos
variables. Algunas implementaciones realizan la comparaci�n de igualdad al final
del algoritmo, como resultando se obtiene un ciclo m�s r�pido de comparaciones pero
se aumenta en uno la cantidad de iteraciones promedio.6?

Coincidencias aproximadas
El procedimiento anterior solo realiza coincidencias exactas, encontrando la
posici�n del valor buscado. Sin embargo, dado el orden natural de los arreglos
ordenados, es trivial extender la b�squeda binaria para realizar coincidencias
aproximadas. Por ejemplo, la b�squeda binaria puede ser usada para computar, para
un valor dado, su rank(el n�mero de elementos menores), antecesor(pr�ximo elemento
menor), sucesor(pr�ximo elemento mayor), y vecinos cercanos. Las consultas en
intervalos, como por ejemplo, buscar el n�mero de elementos entre dos n�meros
pueden ser computadas con dos preguntas de rank.

Las consultas de rank pueden ser realizadas usando una modificaci�n de la b�squeda
binaria, retornando m en las b�squedas donde se encuentre el elemento, y L en donde
no se encuentre, correspondiendo este �ltimo al n�mero de elementos menores que el
valor buscado.
Las consultas de antecesor y sucesor pueden ser computadas con preguntas de rank
tambi�n. Una vez que el rank del valor buscado es conocido, su antecesor es el
elemento en la posici�n dado por su rank(el elemento mayor que es menor que el
valor buscado). Su sucesor es el elemento despu�s del (si �l est� presente en el
arreglo) o en la posici�n siguiente al antecesor (en otro caso). El vecino m�s
cercano del valor buscado es su antecesor o su sucesor, de los dos el m�s cercano.
Las consultas de rango son tambi�n f�ciles de manipular. Una vez que los rank de
ambos valores son conocidos, el n�mero de elementos mayores o iguales al primer
valor y menores que el segundo es la diferencia de los dos ranks. Esta cantidad
puede disminuir o aumentar de acuerdo si los extremos del intervalo deben ser
considerados parte de la pregunta en cuesti�n y cuando el arreglo contenga llaves
que coincidan con los extremos.
Rendimiento

Un �rbol que representa el algoritmo de b�squeda binaria. El arreglo en el cual se


usa el algoritmos es [20, 30, 40, 50, 90, 100], y el valor buscado es 40.
El rendimiento de la b�squeda binaria puede ser analizada reduciendo el algoritmo a
un �rbol binario de b�squeda, donde la ra�z es el elemento en el medio del arreglo,
el elemento en el medio de la primera parte del arreglo es el hijo izquierdo de la
ra�z y el elemento en el medio de la segunda parte es el hijo derecho de la ra�z.
El resto del �rbol se construye de forma similar. Este modelo representa a la
b�squeda binaria, comenzando desde la ra�z, el sub�rbol izquierdo o derecho son
recorridos de acuerdo a si el valor buscado es menor o mayor que el valor presente
en el nodo actual, representando la eliminaci�n sucesiva de los elementos.7?

En el peor de los casos se realizan {\displaystyle \lfloor \log _{2}n+1\rfloor }


{\displaystyle \lfloor \log _{2}n+1\rfloor }iteraciones (del ciclo de
comparaciones), donde la notaci�n {\displaystyle \lfloor \rfloor }{\displaystyle
\lfloor \rfloor } denota la parte entera por debajo de la funci�n. Esta cantidad de
iteraciones es alcanzada cuando la b�squeda alcanza el nivel m�s profundo del
�rbol, equivalente a una b�squeda binaria que se reduce a un solo elemento, y en
cada iteraci�n, siempre elimina el arreglo m�s peque�o de los dos si no tienen la
misma cantidad de elementos.

Como promedio, asumiendo que cada elemento es igualmente probable de ser buscado,
despu�s que la b�squeda termine, el valor buscado ser� m�s probable de ser
encontrado en el segundo nivel del �rbol. Esto es equivalente a una b�squeda
binaria que completa una iteraci�n antes del peor de los casos, alcanz�ndola
despu�s de {\displaystyle \log _{2}n-1}{\displaystyle \log _{2}n-1}iteraciones. Sin
embargo, el �rbol puede estar no balanceado, con el nivel m�s profundo parcialmente
completo, y equivalentemente, el arreglo puede no estar dividido perfectamente por
la b�squeda en algunas iteraciones, resultando que en la mitad de las veces el
menor subarreglo es eliminado. El promedio actual del n�mero de iteraciones es
ligeramente mayor {\displaystyle {\bigl (}\log _{2}n-{\frac {n-\log _{2}n-1}{n}}
{\bigr )}}{\displaystyle {\bigl (}\log _{2}n-{\frac {n-\log _{2}n-1}{n}}
{\bigr )}}.7? En el mejor de los casos, donde el elemento del medio del arreglo es
igual al valor buscado, su posici�n es retornada despu�s de una iteraci�n. En
t�rminos de iteraci�n, ning�n algoritmo basado solamente en comparaciones puede
exhibir mejores promedios en su n�mero de iteraciones que la b�squeda binaria.

Cada iteraci�n de la b�squeda binaria definida anteriormente realiza una o dos


comparaciones, comprobando si el elemento en el medio es igual al valor buscado en
cada iteraci�n. Asumiendo nuevamente que cada elemento es igualmente probable de
ser buscado, cada iteraci�n realiza como promedio 1.5 de comparaciones. Una
variaci�n del algoritmo comprueba por la igualdad en el final de cada b�squeda,
eliminando como promedio la mitad de las comparaciones en cada iteraci�n. En la
mayor�a de las computadoras el procedimiento anterior reduce el tiempo de cada
iteraci�n muy poco, mientras que garantiza que la b�squeda realice el mayor n�mero
de iteraciones posibles y como promedio adiciona una iteraci�n m�s a la b�squeda.
Dado que el ciclo de comparaciones se realiza solamente {\displaystyle \lfloor \log
_{2}n+1\rfloor }{\displaystyle \lfloor \log _{2}n+1\rfloor }veces en el peor de los
casos, para un n suficientemente grande, el peque�o incremento de la eficiencia
producto de las comparaciones en el ciclo no compensa la iteraci�n extra. Knuth
1998 propuso un valor de {\displaystyle 2^{66}}{\displaystyle 2^{66}}(m�s de 76
trillones) elementos para que esta variaci�n fuese m�s r�pida.8?9?

Cascada fraccional puede ser usada para acelerar la b�squeda del mismo valor en
m�ltiples arreglos. Se requiere {\displaystyle O(k\log n)}{\displaystyle O(k\log
n)} para buscar en cada arreglo el elemento seleccionado, cascada fraacional lo
reduce a {\displaystyle O(k+\log n)}{\displaystyle O(k+\log n)}, donde k es el
n�mero de arreglos.10?

Comparaci�n de la b�squeda binaria con otros esquemas


La t�cnica de usar arreglos ordenados con b�squeda binaria es una soluci�n muy
ineficiente cuando la inserci�n y la eliminaci�n son necesarias, tomando un tiempo
de

Otros algoritmos soportan m�s eficientemente la inserci�n y la eliminaci�n, y


tambi�n un macheo m�s r�pido y exacto.

Hashing
Para implementar arreglos asociativos, tablas hash, una estructura que mapea llaves
contra valores usando una funci�n de hash, son generalmente m�s r�pidas que la
b�squeda binaria en arreglos ordenados de valores; la mayor�a de las
implementaciones requiere como promedio un tiempo amortizado constante. Sin
embargo, hashing no es muy �til para comparaciones aproximadas, tales como
antecesor, sucesor, y vecino m�s cercano, dado que la informaci�n que nos presenta
en la b�squeda es si el valor est� presente o no. La b�squeda binaria es ideal para
este tipo de comparaciones, realiz�ndolas en tiempo logar�tmico.11?

�rboles
Un �rbol binario de b�squeda es una estructura de datos que funciona basado en el
principio de la b�squeda binaria: los valores del �rbol est�n colocados en forma
ordenada, y el recorrido del �rbol es realizado usando un algoritmo muy parecido a
la b�squeda binaria. La inserci�n y eliminaci�n requieren al igual que el recorrido
un tiempo logar�tmico. Este costo es mucho mejor que el costo lineal de la
inserci�n y eliminaci�n en los arreglos ordenados, y los �rboles de b�squeda
binaria poseen la habilidad de realizar todas las operaciones posibles en los
arreglos ordenados, incluyendo consultas en rangos y comparaciones aproximadas.

Sin embargo, la b�squeda binaria es usualmente m�s eficiente para realizar


b�squedas puesto que los �rboles binarios de b�squeda estar�n probablemente
desbalanceados, dando como consecuencia un costo computacional superior a la
b�squeda binaria.

Los �rboles binarios de b�squeda se utilizan para realizar b�squedas r�pidas en


dispositivos de almacenamientos externos, donde los datos necesitan ser buscados y
colocados en la memoria principal. Dividiendo el �rbol en p�ginas con una cantidad
determinada de elementos resultado que la b�squeda en el �rbol binario tenga un
menor costo computacional que los buscadores convencionales de los discos. Note que
este proceso crea un �rbol multiprop�sito, puesto que cada p�gina est� conectada
una con otra. El �rbol-B generaliza este m�todo de la organizaci�n en el �rbol, los
Arbol-B son frecuentemente utilizados para organizar largos conjuntos de datos como
las bases de datos o los sistemas de ficheros.

B�squeda lineal
La b�squeda lineal es un simple algoritmo de b�squeda que comprueba cada elemento
hasta que encuentre el valor buscado. La b�squeda lineal puede ser implementada en
una lista enlazada, que nos permite inserciones y eliminaciones m�s eficientes que
un arreglo. La b�squeda binaria es m�s eficiente que la b�squeda lineal en los
arreglos ordenados, exceptuando los arreglos que contenga pocos elementos. Si el
arreglo debe ser ordenado primero, ese costo debe ser amortizado sobre cualquier
b�squeda. Ordenar el arreglo tambi�n nos permite comparaciones aproximadas m�s
eficientes, entre otras operaciones.

Aproximaciones mixtas
El arreglo de Judy usa un conjunto de ideas para lograr una soluci�n m�s eficiente.

Algoritmos de clasificaci�n
Un problema relacionado con la b�squeda es la clasificaci�n. Cualquier algoritmo
que realice b�squedas, como la b�squeda binaria, puede ser usado para clasificar
tambi�n. Existen otros algoritmos m�s espec�ficos para la clasificaci�n, un arreglo
de bit es el m�s simple, usado cuando el rango de los elementos es limitado, es muy
r�pido ya que requiere un tiempo constante.

Para resultados aproximados, los filtros de Bloom, otra estructura de dato


probabilista basada en hashing, guarda un conjunto de valores codificando los
valores con arreglos de bits y m�ltiples fucnciones de hash. Los filtros de
Bloomson mucho m�s eficaces que los arreglos de bits en cuanto a espacio en la
mayor�a de los casos y mucho m�s lentos.12?

Otras estructuras de datos


Existen estructuras de datos que pueden realizar b�squeda binaria en arreglos
ordenados. Por ejemplo, las b�squedas, las comparaciones parciales y todas las
operaciones permitidas en arreglos ordenados pueden ser realizadas de manera m�s
eficiente que con la b�squeda binaria con estructuras como los �rboles de van Emde
Boas, �rboles de fusi�n, tries, y arreglos de bits. Sin embargo, mientras que estas
operaciones pueden ser realizadas eficientemente en los arreglos ordenados sin
importancia de cual sea el tipo de los elementos, este tipo de estructura de datos
son usualmente m�s eficientes porque explotan las propiedades del conjunto de
elementos del arreglo.11?

Variaciones
B�squeda binaria uniforme
La b�squeda binaria uniforme guarda el �ndice del elemento del medio y el n�mero de
elementos alrededor del elemento del medio que no hemos eliminado todav�a. Cada
paso reduce el tama�o del arreglo aproximadamente en la mitad. Esta variaci�n es
uniforme porque la diferencia entre los �ndices de los elementos del medio y el
elemento escogido en la iteraci�n anterior permanece constante para arreglos del
mismo tama�o.

B�squeda Fibonacci

B�squeda Fibonacci en la funci�n{\displaystyle f{\bigl (}x{\bigr )}=\sin {\bigl (}


{\bigl (}x+{\frac {1}{10}}{\bigr )}\pi {\bigr )}}{\displaystyle f{\bigl
(}x{\bigr )}=\sin {\bigl (}{\bigl (}x+{\frac {1}{10}}{\bigr )}\pi {\bigr )}}en el
intervalo {\displaystyle [0,1]}{\displaystyle [0,1]}. En el ejemplo anterior el
algoritmo encuentra un intervalo que contiene el m�ximo de {\displaystyle f}f con
una longitud menor o igual a {\displaystyle {\frac {1}{10}}}{\displaystyle {\frac
{1}{10}}}. En tres iteraciones, devuelve el intervalo {\displaystyle [{\frac {5}
{13}},{\frac {6}{13}}]}{\displaystyle [{\frac {5}{13}},{\frac {6}{13}}]}, con una
longitud de {\displaystyle {\frac {1}{13}}}{\displaystyle {\frac {1}{13}}}.
La b�squeda Fibonacci es un m�todo similar a la b�squeda binaria que sucesivamente
reduce el tama�o del intervalo al cual el m�ximo de una funci�n unimodal pertenece.
Dado un intervalo finito, una funci�n unimodal, y la m�xima longitud del intervalo
resultante, la b�squeda Fibonacci encuentra un n�mero de Fibonacci tal que si el
intervalo se divide en esta cantidad de subintervalos de igual longitud, los
subintervalos ser�n menores que la m�xima longitud. Despu�s de dividido el
intervalo, elimina los subintervalos a los cuales el m�ximo no pertenece hasta que
permanezcan uno o m�s subintervalos continuos.13?14?

B�squeda exponencial
La b�squeda exponencial es un algoritmo para buscar principalmente en listas
infinitas, pero puede ser aplicada para seleccionar el l�mite superior de la
b�squeda binaria. Comienza encontrando el primer elemento que cumple que es una
potencia de dos y mayor que el valor buscado, despu�s, fija este �ndice como el
l�mite superior de la b�squeda binaria, y cambia hacia la b�squeda binaria. La
b�squeda realiza {\displaystyle \lfloor \log _{2}x+1\rfloor }{\displaystyle \lfloor
\log _{2}x+1\rfloor }iteraciones de la b�squeda exponencial y a lo sumo
{\displaystyle \lfloor \log _{2}x\rfloor }{\displaystyle \lfloor \log
_{2}x\rfloor }iteraciones de la b�squeda binaria, donde {\displaystyle x}x es la
posici�n del valor buscado. Solamente si el valor buscado est� cerca del principio
del arreglo es que esta variaci�n es m�s eficiente que seleccionar el mayor
elemento como el l�mite superior.

B�squeda de interpolaci�n
Al contrario de la b�squeda binaria, la b�squeda de interpolaci�n no calcula el
punto medio sino que realiza varios intentos en busca del valor requerido, tomando
en cuenta el menor y mayor elemento del arreglo as� como su longitud. Este
procedimiento es solamente posible si los elementos del arreglo son n�meros. Se
basa en la hip�tesis de que el elemento del medio no es la mejor opci�n en muchos
casos; por ejemplo, si el elemento buscado esta pr�ximo al mayor elemento del
arreglo, es muy probable que este ubicado en el final del arreglo. Cuando la
distribuci�n de los elementos en el arreglo es uniforme o cercanamente, se realizan
{\displaystyle O{\bigl (}\log \log n{\bigr )}}{\displaystyle O{\bigl (}\log \log
n{\bigr )}}comparaciones.15?

En la pr�ctica, la b�squeda de interpolaci�n es m�s ineficiente que la b�squeda


binaria para arreglos peque�os, dado que la b�squeda por interpolaci�n requiere un
conjunto de c�mputos extras, y la tasa de crecimiento de su complejidad solo se
compensa para arreglos grandes.

Cascada fraccional
Cascada fraccionaria es una t�cnica que acelera la b�squeda binaria del mismo
elemento en arreglos ordenados. La b�squeda en cada arreglo toma {\displaystyle
O{\bigl (}k\log n{\bigr )}}{\displaystyle O{\bigl (}k\log n{\bigr )}}, donde
{\displaystyle k}k es el n�mero de arreglos. Cascada fraccionaria reduce este costo
a {\displaystyle O{\bigl (}k+\log n{\bigr )}}{\displaystyle O{\bigl (}k+\log
n{\bigr )}}almacenando informaci�n espec�fica en cada arreglo acerca de los otros
arreglos.10?

Cascada fraccionaria fue desarrollada originalmente para resolver eficientemente


varios problemas de geometr�a computacional, pero tambi�n ha sido aplicada en
dominios como el ruteo de los protocolos de internet.10?

Historia
En 1946, John Mauchly mencion� por primera vez la b�squeda binaria como parte de
Moore School Lectures, el primer conjunto de conferencias relacionado con las
computadoras. Las siguientes publicaciones mencionaban que la b�squeda binaria solo
funcionaba en arreglos cuya longitud fuese de uno menos que una potencia de dos
hasta 1960, cuando Derrick Henry Lehmer p�blico un algoritmo de b�squeda binaria
que funcionaba en todos los arreglos ordenados. En 1962, Hermann Bottenbruch
present� en ALGOL 60 una implementaci�n del algoritmo de b�squeda binaria en el
cual colocaba la comparaci�n de igualdad en el final del algoritmo, incrementando
el n�mero promedio de iteraciones por uno, pero reduciendo a uno el n�mero de
comparaciones por iteraci�n. La b�squeda binaria uniforme fue presentada a Donald
Knuth en 1971 por A. K. Chandra de la universidad de Stanford y publicado en el
libro de Knuth: The Art of Computer Programming. En 1986, Bernard Chazelle y
Leonidas J. Guibas introdujeron cascada fraccional, una t�cnica usada para acelerar
la b�squeda binaria en m�ltiples arreglos.10?16?17?

Problemas de implementaci�n
A pesar de que la idea b�sica de b�squeda binaria es realtivamente sencilla, los
detalles pueden ser sorprendentemente complicados...�Donald Knuth [2]

Cuando Jon Bentley asigno la b�squeda binaria como un problema en un curso de


programadores profesionales, se percat� que el noventa por ciento fallo en
desarrollar una soluci�n correcta despu�s de varias horas de trabajo y otro estudio
publicado en 1988 muestra que el c�digo correcto solo se encuentra en cinco de cada
veinte muestras tomadas. Adem�s la propia implementaci�n de b�squeda binaria de
Bentley, publicada en su libro de 1986 Programming Pearls, conten�a un error de
desbordamiento (overflow) que permaneci� sin ser detectado por m�s de veinte a�os,
adem�s la implementaci�n de la biblioteca del lenguaje de programaci�n Java de la
b�suqeda binaria tuvo el mismo error durante m�s de nueve a�os.18?

En una implementaci�n pr�ctica, las variables utilizadas para representar los


�ndices a menudo ser�n de tama�o fijo, y esto puede dar lugar a un desbordamiento
aritm�tico para arreglos muy grandes. Si el punto medio del intervalo se calcula
como (L + R) / 2, entonces el valor de L + R puede exceder el rango de enteros del
tipo de datos usado para almacenar el punto medio, incluso si L y R est�n dentro
del rango. Si L y R no son negativos, esto se puede evitar calculando el punto
medio como L + (R - L) / 2.19?
Si el valor buscado es mayor que el valor m�ximo del arreglo y el �ltimo �ndice del
arreglo es el valor m�ximo representable de L, el valor de L eventualmente se
convertir� en demasiado grande y ocurrir� un desbordamiento. Un problema similar
ocurrir� si el valor buscado es menor que el menor valor en el arreglo y el primer
�ndice del arreglo es el valor representable m�s peque�o de R. En particular, esto
significa que R no debe ser un tipo sin signo si el arreglo empieza con �ndice 0..

Un bucle infinito puede ocurrir si las condiciones de salida para el bucle no est�n
definidas correctamente. Una vez L supera R, la b�squeda ha fallado y debe
transmitir el fracaso de la b�squeda. Adem�s, el bucle debe salir cuando se
encuentra el elemento de destino, o en el caso de una implementaci�n donde este
control se mueve al final, comprueba si la b�squeda tuvo �xito o fall� al final
debe estar en su lugar. Bentley encontr� que, en su asignaci�n de b�squeda binaria,
este error fue realizado por la mayor�a de los programadores que no implementaron
correctamente una b�squeda binaria. 6?

Soporte de biblioteca
Las bibliotecas est�ndar de muchos lenguajes de programaci�n incluyen
implementaciones de la b�squeda binaria:

C proporciona la funci�n bsearch() en su biblioteca est�ndar, la cual es


t�picamente implementada mediante b�squeda binaria (a pesar de que el est�ndar no
lo requiere as�).20?
C++ STL proporciona las funciones binary_search()(), lower_bound(), upper_bound() y
equal_range().[50]
COBOL proporciona el verbo SEARCH ALL para realizar b�squedas binarias en tablas
COBOL ordenadas.21?
Java ofrece un conjunto de m�todos est�ticos de binarySearh() en la clase Arrays y
Colecciones en el paquete est�ndar java.util para realizar b�squedas binarias en
los Arreglos y en las Listas de Java.22?23?
Microsoft's .NET Franmework 2.0 ofrece versiones gen�ricas est�ticas de la b�squeda
binaria en su colecci�n de clases. Un ejemplo ser�a Sistema. Array's
BinarySearch<T>(T[] array, T valor).24?
Python proporciona el m�dulo bisect.25?
La clase de Array de Ruby incluye un m�todo bsearch con coincidencia aproximada
incorporada.
El paquete de biblioteca est�ndar: sort de Go contiene las funciones Search,
SearchInts, SearchFloat64s y SearchStrings, que implementan la b�squeda binaria
general, as� como implementaciones espec�ficas para buscar segmentos de n�meros
enteros, n�meros de punto flotante y cadenas, respectivamente.
Para Objective-C, el marco de Cacao proporciona el NSArray
-indexOfObject:inSortedRange:opciones:usingComparator: m�todo en Mac OS X 10.6+.26?
Apple's Core Foundation C framework tambi�n contiene un CFArrayBSearchValues()
funci�n.27?
V�ase tambi�n
M�todo de bisecci�n
Notas y referencias
Notas y citas
Willams, Jr., Louis F. (1975). A modification to the half-interval search (binary
search) method. Proceedings of the 14th ACM Southeast Conference. pp. 95-101.
doi:10.1145/503561.503582.
Knuth, 1998, �6.2.1 ("Searching an ordered table"), subsection "Binary search".
Cormen et al., 2009, p. 39.
Weisstein, Eric W. �Binary Search�. En Weisstein, Eric W. MathWorld (en ingl�s).
Wolfram Research.
Flores, Ivan; Madpis, George (1971). �Average binary search length for dense
ordered lists�. CACM 14 (9): 602-603. doi:10.1145/362663.362752.
Bottenbruch, Hermann (1962).
Flores, Ivan; Madpis, George (1971).
Sloane, Neil.
Rolfe, Timothy J. (1997).
Chazelle, Bernard; Liu, Ding (2001).
Beame, Paul; Fich, Faith E. (2001).
Bloom, Burton H. (1970).
Kiefer, J. (1953).
Hassin, Refael (1981).
Perl, Yehoshua; Itai, Alon; Avni, Haim (1978).
Chazelle, Bernard; Guibas, Leonidas J. (1986).
Chazelle, Bernard; Guibas, Leonidas J. (1986), "Fractional cascading: II".
Bloch, Joshua (2 June 2006).
Ruggieri, Salvatore (2003).
"bsearch � binary search a sorted table".
"The Binary Search in COBOL".
"java.util.
"java.util.
"List<T>.
"8.5. bisect � Array bisection algorithm".
"NSArray".
"CFArray".
Trabajos
Alexandrescu, Andrei (2010). The D Programming Language. Upper Saddle River, NJ:
Addison-Wesley Professional. ISBN 0-321-63536-1.
Bentley, Jon (2000) [1986]. Programming Pearls (2nd edici�n). Addison-Wesley. ISBN
0-201-65788-0.
Chang, Shi-Kuo (2003). �Data Structures and Algorithms�. Software Engineering and
Knowledge Engineering 13 (Singapore: World Scientific). ISBN 978-981-238-348-8.
Plantilla:Introduction to Algorithms
Fitzgerald, Michael (2007). Ruby Pocket Reference. Sebastopol, CA: O'Reilly Media.
ISBN 978-1-4919-2601-7.
Goldman, Sally A.; Goldman, Kenneth J. (2008). A Practical Guide to Data Structures
and Algorithms using Java. Boca Raton: CRC Press. ISBN 978-1-58488-455-2.
Plantilla:TAOCP
Leiss, Ernst (2007). A Programmer's Companion to Algorithm Analysis. Boca Raton,
FL: CRC Press. ISBN 1-58488-673-0.
Moffat, Alistair; Turpin, Andrew (2002). Compression and Coding Algorithms.
Hamburg, Germany: Kluwer Academic Publishers. ISBN 978-0-7923-7668-2.
doi:10.1007/978-1-4615-0935-6.
Sedgewick, Robert; Wayne, Kevin (2011). Algorithms (4th edici�n). Upper Saddle
River, NJ: Addison-Wesley Professional. ISBN 978-0-321-57351-3. Condensed web
version: open access; book version Plantilla:Closed access.
Stroustrup, Bjarne (2013). The C++ Programming Language (4th edici�n). Upper Saddle
River, NJ: Addison-Wesley Professional. ISBN 978-0-321-56384-2.
Enlaces externos
NIST Dictionary of Algorithms and Data Structures: binary search.
B�squeda binaria ejemplo en Java
Control de autoridades
Proyectos WikimediaWd Datos: Q243754Commonscat Multimedia: Binary search algorithm
Categor�a: Algoritmos de b�squeda
Men� de navegaci�n
No has accedidoDiscusi�nContribucionesCrear una
cuentaAccederArt�culoDiscusi�nLeerEditarVer historialBuscar
Buscar en Wikipedia
Portada
Portal de la comunidad
Actualidad
Cambios recientes
P�ginas nuevas
P�gina aleatoria
Ayuda
Donaciones
Notificar un error
En otros proyectos
Wikimedia Commons
Imprimir/exportar
Crear un libro
Descargar como PDF
Versi�n para imprimir
Herramientas
Lo que enlaza aqu�
Cambios en enlazadas
Subir archivo
P�ginas especiales
Enlace permanente
Informaci�n de la p�gina
Elemento de Wikidata
Citar esta p�gina

En otros idiomas
???????
Deutsch
English
Fran�ais
??????
Bahasa Indonesia
Portugu�s
???????
??
31 m�s
Editar enlaces
Esta p�gina se edit� por �ltima vez el 30 ago 2019 a las 11:16.
El texto est� disponible bajo la Licencia Creative Commons Atribuci�n Compartir
Igual 3.0; pueden aplicarse cl�usulas adicionales. Al usar este sitio, usted acepta
nuestros t�rminos de uso y nuestra pol�tica de privacidad.
Wikipedia� es una marca registrada de la Fundaci�n Wikimedia, Inc., una
organizaci�n sin �nimo de lucro.
Pol�tica de privacidadAcerca de WikipediaLimitaci�n de
responsabilidadDesarrolladoresDeclaraci�n de cookiesVersi�n para m�vilesWikimedia
FoundationPowered by MediaWiki

También podría gustarte