Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SANTA ELENA
ALGORITMO
DE BUSQUEDA
Y
ORDENAMIEN
TO
FUNDAMENTO DE
PROGRAMACION
Clasificación
misma quedarán en orden de fecha. Otro caso sería cuando no interesan las mayúsculas
y minúsculas, pero se quiere que si una clave aBC estaba antes que AbC, en el resultado
ambas claves aparezcan juntas y en el orden original: aBC, AbC. Cuando los elementos
son indistinguibles (porque cada elemento se ordena por la clave completa) la
estabilidad no interesa. Los algoritmos de ordenamiento que no son estables se pueden
implementar para que sí lo sean. Una manera de hacer esto es modificar artificialmente
la clave de ordenamiento de modo que la posición original en la lista participe del
ordenamiento en caso de coincidencia.
Estabilidad
Los algoritmos de ordenamiento estable mantienen un relativo preorden total. Esto
significa que un algoritmo es estable solo cuando hay dos registros R y S con la misma
clave y con R apareciendo antes que S en la lista original.
Cuando elementos iguales (indistinguibles entre sí), como números enteros, o más
generalmente, cualquier tipo de dato en donde el elemento entero es la clave, la
estabilidad no es un problema. De todas formas, se asume que los siguientes pares de
números están por ser ordenados por su primer componente:
En este caso, dos resultados diferentes son posibles, uno de los cuales mantiene un
orden relativo de registros con claves iguales, y una en la que no:
Ordenar según una clave primaria, secundaria, terciara, etc., puede ser realizado
utilizando cualquier método de ordenamiento, tomando todas las claves en
consideración (en otras palabras, usando una sola clave compuesta). Si un método de
ordenamiento es estable, es posible ordenar múltiples ítems, cada vez con una clave
distinta. En este caso, las claves necesitan estar aplicadas en orden de aumentar la
prioridad.
Ejemplo: ordenar pares de números, usando ambos valores
(4, 1) (3, 1) (4, 6) (3, 7) (después de ser ordenado por el segundo valor)
(3, 1) (3, 7) (4, 1) (4, 6) (después de ser ordenado por el primer valor)
(3, 7) (3, 1) (4, 1) (4, 6) (después de ser ordenado por el primer valor)
(3, 1) (4, 1) (4, 6) (3, 7) (después de ser ordenando por el segundo valor,
Ordenamiento de
Bubblesort O(n²) O(1) Intercambio
burbuja
Ordenamiento de
burbuja Cocktail sort O(n²) O(1) Intercambio
bidireccional
Ordenamiento por
Insertion sort O(n²) O(1) Inserción
inserción
Ordenamiento por No
Bucket sort O(n) O(n)
casilleros comparativo
Ordenamiento por
Merge sort O(n log n) O(n) Mezcla
mezcla
Pigeonhole
O(n+k) O(k)
sort
Distribution
O(n³) versión recursiva O(n²)
sort
Inestables
Nombre
Nombre traducido Complejidad Memoria Método
original
Ordenamiento
Shell sort O(n1.25) O(1) Inserción
Shell
Ordenamiento por
Heapsort O(n log n) O(1) Selección
montículos
Ordenamiento Promedio: O(n log n),
Quicksort O(log n) Partición
rápido peor caso: O(n²)
Promedio: O(n u),
Several peor caso: O(n²);
Unique Sort u=n; u = número único
de registros
Cuestionables, imprácticos
Nombre
Nombre traducido Complejidad Memoria Método
original
O(n × n!), peor: no
Bogosort
termina
O(n), excepto en
Ordenamiento de Pancake
máquinas de Von
panqueques sorting
Neumann
ALGORITMOS DE BÚSQUEDA
Búsqueda Secuencial
Búsqueda Binaria
Búsqueda Hashing
ALGORITMOS DE ORDENAMIENTO
Ordenamiento de Burbuja
Ordenamiento por Inserción
Ordenamiento por selección
Ordenamiento con árbol binario
Ordenamiento Shell
Ordenamiento rápido (Quicksort)
Ordenamiento por montículos (Heapsort)
BÚSQUEDA SECUENCIAL
Consiste en ir comparando el elemento que se busca con cada elemento del arreglo hasta
que se encuentra.
EL ALGORITMO SERIA:
for (i=0; i < LARGO; i++)
if (a[i]==Elemento_buscado)
printf(“Elemento encontrado en: %d\n”, i);
BÚSQUEDA BINARIA
Para utilizar este algoritmo, el arreglo debe estar ordenado y no se deben repetir los
elementos. La búsqueda binaria consiste en dividir el arreglo en dos subarreglos más
pequeños, y comparar el elemento con el del centro. Si coinciden, la búsqueda se
termina. En cada iteración el arreglo se divide en dos.
EJEMPLO
Se intenta buscar el elemento 3 en el arreglo {1,2,3,4,5,6,7,8,9}, se realizaran los
siguientes pasos.
ORDENAMIENTO BURBUJA
Consiste en ciclar repetidamente a través de la lista, comparando elementos adyacentes
de dos en dos. Si un elemento es mayor que el que está en la siguiente posición se
intercambian.
2–1–3–4–5
1–2–3–4–5
EL ALGORITMO SERIA:
for (i=1; i<TAM; i++)
for j=0 ; j<TAM – 1; j++)
if (lista[j] > lista[j+1])
temp = lista[j];
lista[j] = lista[j+1];
lista[j+1] = temp;
ARBOLES DE ORDENAMIENTO
Un árbol binario es aquel que está formado por un nodo cuyos subárboles izquierdo y
derecho son a su vez arboles binario. (5,3,2,9,7,6,8,10).
ALGORITMO
1. for (i=1; i<TAM; i++)
2. temp = lista[i];
3. j = i – 1;
4. while ( (lista[j] > temp) && (j >= 0) )
5. lista[j+1] = lista[j];
6. j–;
7. lista[j+1] = temp;
Nota: En cada iteración del ciclo externo los elementos 0 a i forman una
lista ordenada.