Algoritmos en Java: ordenación y búsqueda
Burbuja, selección, inserción y búsqueda binaria, con un visualizador animado que muestra cada comparación y cada intercambio.
En el día a día usarás Arrays.sort() y Collections.sort() (muy optimizados).
Pero entender cómo ordena y busca un ordenador te enseña a pensar en coste: no es lo
mismo O(n²) que O(log n).
Visualizador de ordenación
Elige un algoritmo y pulsa «Ordenar». Cada barra es un número; las que se comparan se resaltan.
for (int i = 0; i < n - 1; i++)
for (int j = 0; j < n - 1 - i; j++)
if (a[j] > a[j + 1]) {
int tmp = a[j]; a[j] = a[j + 1]; a[j + 1] = tmp;
}
Búsqueda binaria
Sobre un array ya ordenado: mira el elemento del medio; si es mayor que el buscado, descarta la mitad derecha; si es menor, la izquierda. Repite. En un millón de elementos, ~20 pasos.
Arrays.binarySearch(array, valor)
(el array debe estar ordenado).Complejidad (Big-O)
| Algoritmo | Mejor | Medio | Peor |
|---|---|---|---|
| Burbuja / Selección / Inserción | O(n)* | O(n²) | O(n²) |
Merge sort / Arrays.sort (objetos) | O(n log n) | O(n log n) | O(n log n) |
Quicksort / Arrays.sort (primitivos) | O(n log n) | O(n log n) | O(n²) |
| Búsqueda lineal | O(1) | O(n) | O(n) |
| Búsqueda binaria | O(1) | O(log n) | O(log n) |
* la inserción es O(n) si el array ya está casi ordenado.