4. Ordenamiento
Es la operación de arreglar los registros de una
tabla en algún orden secuencial de acuerdo a un
criterio de ordenamiento. El ordenamiento se
efectúa con base en el valor de algún campo en
un registro. El propósito principal de un
ordenamiento es el de facilitar las búsquedas de
los miembros del conjunto ordenado.
El ordenar un grupo de datos significa mover
los datos o sus referencias para que queden en
una secuencia tal que represente un orden, el
cual puede ser numérico, alfabético o incluso
alfanumérico, ascendente o descendente.
Osirys
5. Búsqueda
es aquel que está diseñado para localizar
un elemento con ciertas propiedades
dentro de una estructura de datos; por
ejemplo, ubicar el registro
correspondiente a cierta persona en
una base de datos, o el mejor movimiento
en una partida de ajedrez.
La variante más simple del problema es la
búsqueda de un número en un vector.
Osirys
6. Notación de la gran O (big O)
Cuando trabajamos con algoritmos,
normalmente nos interesa el rendimiento de
éste. Nos interesa saber, por ejemplo, de qué
forma se comporta el algoritmo dada una
cantidad determinada de datos a procesar.
Científicos en computación emplean una forma
de categorizar y comparar los algoritmos, de tal
suerte que se pueda categorizar de forma rápida
el rendimiento de un algoritmo. Esta forma de
medir se llama la Notación Gran O: Big-O
Notation (BON).
Medardo
7. Esta notación expresa la ejecución de un algoritmo dado un parámetro de entrada (i.e. el tamaño de datos a procesar). La
notación normalmente es O(n)
Medardo
8. Básicamente notación gran O:
crece en forma de la gráfica matemática.
nos permite comparar los costos relativos de dos o
más algoritmos para resolver el mismo problema.
Permite análisis de algoritmos, estima el consumo de
recursos de un algoritmo.
Permite análisis de algoritmos también les da una
herramienta a los diseñadores de algoritmos para
estimar si una solución propuesta es probable que
satisfaga las restricciones de recursos de un problema.
El concepto de razón de crecimiento, es la razón a la cual
el costo de un algoritmo crece conforme el tamaño de la
entrada crece.
Una función f(n) se define de orden O(g(n)), es decir, f(n) =
O(g(n)) si existen constantes positivas n0 y c tales que: |
f(n) | = c * <= | g(n) | , para toda n > n0100 n3 => O(n3) ::
6n2 + 2n + 4 => O(n21024 => O(1)
1+2+3+4+...+n-1+n= n * (n+1)/2 = O(n2) Medardo
9. Quicksort
El método de ordenamiento rápido o método quicksort, es una
técnica basada en otra conocida con el nombre divide y
vencerás, que permite ordenar una cantidad de elementos en
un tiempo proporcional a n2 en el peor de los casos o a n log n
en el mejor de los casos. El algoritmo original es recursivo,
como la técnica en la que se basa.
Debe elegir uno de los elementos del arreglo al que llamaremos pivote.
Debe acomodar los elementos del arreglo a cada lado del pivote, de
manera que del lado izquierdo queden todos los menores al pivote y del
lado derecho los mayores al pivote; considere que en este momento, el
pivote ocupa exactamente el lugar que le corresponderá en el arreglo
ordenado.
Colocado el pivote en su lugar, el arreglo queda separado en dos
subarreglos, uno formado por los elementos del lado izquierdo del pivote,
y otro por los elementos del lado derecho del pivote.
Repetir este proceso de forma recursiva para cada sub arreglo mientras
éstos contengan más de un elemento. Una vez terminado este proceso
todos los elementos estarán ordenados.Jesús
10. El ordenamiento por
montículos (heapsort
en inglés) es un
algoritmo de
ordenamiento no
recursivo, no estable,
con complejidad
computacional
Este algoritmo consiste en
almacenar todos los
elementos del vector a
ordenar en un montículo
(heap), y luego extraer el
nodo que queda como
nodo raíz del montículo
(cima) en sucesivas
iteraciones obteniendo el
conjunto ordenado.
Heapsort
Jesús
11. ORDENAMIENTO POR SELECCIÓN
(SelectionSort)
Buscas el elemento más pequeño de la lista.
Lo intercambias con el elemento ubicado en la primera posición de la lista.
Buscas el segundo elemento más pequeño de la lista.
Lo intercambias con el elemento que ocupa la segunda posición en la lista.
Repites este proceso hasta que hayas ordenado toda la lista.
Ventajas:
Fácil implementación.
No requiere memoria
adicional.
Rendimiento constante:
poca diferencia entre el
peor y el mejor caso.
Desventajas:
Lento.
Realiza numerosas
comparaciones.
Osirys
12. ORDENAMIENTO POR INSERCIÓN DIRECTA (InsertionSort)
El algoritmo de ordenación por el método de inserción directa es un algoritmo relativamente sencillo
y se comporta razonablemente bien en gran cantidad de situaciones.
Completa la tripleta de los algoritmos de ordenación más básicos y de orden de complejidad
cuadrático, junto con SelectionSort y BubbleSort.
Se basa en intentar construir una lista ordenada en el interior del array a ordenar.
Osirys
13. ANÁLISIS DEL ALGORITMO.
Estabilidad: Este algoritmo nunca intercambia registros con claves iguales. Por lo tanto es estable.
Requerimientos de Memoria: Una variable adicional para realizar los intercambios.
Tiempo de Ejecución: Para una lista de n elementos el ciclo externo se ejecuta n1 veces. El ciclo interno se ejecuta
como máximo una vez en la primera iteración, 2 veces en la segunda, 3 veces en la tercera, etc.
Ventajas:
Fácil implementación.
Requerimientos mínimos de memoria.
Desventajas:
Lento.
Realiza numerosas comparaciones.Jose
14. METODO DE LA BURBUJA (BubbleSort)
La idea básica del ordenamiento de la burbuja es recorrer el conjunto de elementos en forma secuencial varias
veces. Cada paso compara un elemento del conjunto con su sucesor (x[i] con x[i+i]), e intercambia los dos
elementos si no están en el orden adecuado.
El algoritmo utiliza una bandera que cambia cuando se realiza algún intercambio de valores, y permanece intacta
cuando no se intercambia ningún valor, pudiendo así detener el ciclo y terminar el proceso de ordenamiento
cuando no se realicen intercambios, lo que indica que este ya está ordenado.
Este algoritmo es de fácil comprensión y programación pero es poco eficiente puesto que existen n-1 pasos y n-
i comprobaciones en cada paso, aunque es mejor que el algoritmo de ordenamiento por intercambio.
Jesús
15. De cadena Knuth-Morris-Pratt
El algoritmo KMP, trata de localizar la posición de comienzo de una cadena, dentro de
otra. Antes que nada con la cadena a localizar se pre calcula una tabla de saltos (conocida
como tabla de fallos) que después al examinar entre si las cadenas se utiliza para hacer
saltos cuando se localiza un fallo.
Jose
16. De cadena Boye-Moore
El algoritmo de búsqueda de cadenas Boyer-Moore es un particularmente eficiente algoritmo de búsqueda de
cadenas. El algoritmo pre procesa la cadena objetivo (clave) que está siendo buscada, pero no en la cadena en que
se busca (no como algunos algoritmos que procesan la cadena en que se busca y pueden entonces amortizar el
coste del pre procesamiento mediante búsqueda repetida). El tiempo de ejecución del algoritmo Boyer-Moore,
aunque es lineal en el tamaño de la cadena siendo buscada, puede tener un factor significativamente más bajo que
muchos otros algoritmos de búsqueda: no necesita comprobar cada carácter de la cadena que es buscada, puesto
que salta algunos de ellos. Generalmente el algoritmo es más rápido cuanto más grande es la clave que es
buscada, usa la información conseguida desde un intento para descartar tantas posiciones del texto como sean
posibles en donde la cadena no coincida.
Jose