Una búsqueda binaria de doble pivote divide una matriz ordenada en 3 sub-matrices en lugar de 2 y ceros en la sub-matriz que puede contener el elemento que está buscando.
Esto da como resultado menos iteraciones ([matemática] \ log_3 n [/ matemática] en lugar de [matemática] \ log_2 n [/ matemática]) pero más comparaciones por iteración, por lo que no hay mucho (si es que hay) que ganar con este enfoque.
Aquí está el pseudocódigo de una versión iterativa:
- ¿Es posible desarrollar un algoritmo que pueda hacer predicciones perfectas en el mercado de valores?
- En lugar de usar una matriz y ordenar elementos de mayor a menor, ¿cómo puedo usar un montón?
- ¿Cuál es el mejor algoritmo de clasificación manual? Por ejemplo, si tuviera una pila de papeles que quisiera ordenar alfabéticamente, ¿cuál sería la forma más eficiente de hacerlo? ¿Qué pasaría si estuvieras de acuerdo con que uno o dos se alejen de su posición ordenada?
- ¿Qué debo aprender en línea si quiero obtener un trabajo bien remunerado en TI en India? ¿Debería ser algo así como algoritmos de estructura de datos o un lenguaje como Python o R o algo así como un desarrollador de aplicaciones de Android o algo más?
- ¿Cuántas matemáticas necesito para aprender sobre estructuras de datos y algoritmos?
Función dualPivotBinarySearch (array, k, n) lo = 0 hi = n-1 // Límites de la matriz MIENTRAS lo <= hola p = lo + (hi - lo) / 3 q = lo + 2 * (hola - lo) / 3 SI k <matriz [p] ENTONCES hola = p-1 ELSEIF k = matriz [p] ENTONCES volver p ELSEIF k <matriz [q] ENTONCES lo = p + 1 hola = q-1 ELSEIF k = matriz [q] ENTONCES volver q MÁS lo = q + 1 TERMINARA SI Mientras tanto volver -1 FUNCION FINAL