Escolar Documentos
Profissional Documentos
Cultura Documentos
ordenación y búsqueda
ASPIRANTE: EDGAR RODRIGO LOPEZ SILVA
¿En que consiste la ordenación?
En computación y matemáticas un algoritmo de ordenación es un algoritmo que reacomoda los
elementos de una lista o un vector en una secuencia dada por una relación de orden.
𝑺𝒂𝒍𝒊𝒅𝒂: 𝑝𝑒𝑟𝑚𝑢𝑡𝑎𝑐𝑖ó𝑛 < 𝑎′0 , 𝑎′2 , … , 𝑎′ 𝑛−1 > 𝑡𝑎𝑙 𝑞𝑢𝑒 𝑎′ 0 ≤ 𝑎′ 2 ≤ ⋯ ≤ 𝑎′ 𝑛−1 .
Algoritmos básicos de ordenación
Ordenación por intercambio
En la primera pasada se hacen n-1 comparaciones, en la segunda pasada n-2 y así sucesivamente.
La complejidad del algoritmo se mide por el número de comparaciones y es cuadrática, es decir 0(n2).
Ordenamiento por inserción
Algoritmo:
▪El primer elemento A[0] se considera ordenado; es decir, la lista
inicial consta de un elemento.
▪Se inserta A[1] en la posición correcta; delante o detrás de A[0],
dependiendo de que sea menor o mayor. Es decir, se explora la lista
desde A[i] hasta A[n] buscando la posición correcta de destino; esto
es, la posición a insertar dentro de la lista ordenada.
▪Por cada bucle o iteración se mueve hacia abajo (a la derecha en la
lista) una posición todos los elementos mayores que la posición a
insertar, para dejar vacía esa posición.
▪Insertar el elemento a la posición correcta.
Análisis asintótico
La ordenación por inserción requiere un numero fijo de iteraciones.
Caso promedio: Para una iteración general i, la inserción ocurre en la sublista A[0] a A[i] y requiere la media de
i/2 comparaciones. Por ende, la complejidad del algoritmo es 𝑂(𝑛2 ).
Mejor caso: sucede cuando la lista original está ya ordenada; en la pasada i, la inserción ocurre en A[i] y el
número total de comparaciones es 1 con complejidad 𝑂 𝑛 .
Peor caso: Se produce cuando la lista está ordenada en orden descendente (inverso) y el número total de
comparaciones esta descrito por la formula que se muestra a continuación. La complejidad es 𝑂(𝑛2 ).
* Por convención del autor, se utiliza la notación O para los tres casos. Otros autores usan la notación correspondiente para cada caso.
Ordenamiento por burbuja
Algoritmo:
▪En la iteración 0 se comparan elementos adyacentes. (A[0], A[1]),
(A[1], A[2]), (A[2], A[3]),..., (A[n-2], A[n-1]). Se realizan n-1
comparaciones. Por cada pareja (A[i] , A[i+1]) se intercambian los
valores si A[i+1] < A[i]. Al final de la pasada, el elemento mayor de la
lista está situado en A[n-1].
▪En la iteración 1 se realizan las mismas comparaciones e
intercambios, terminando con el elemento de segundo mayor valor
en A[n-2].
▪El proceso termina con la iteración n-1, en la que el elemento más
pequeño se almacena en A[0].
Análisis asintótico
Dependerá de la versión utilizada:
▪La versión más simple se hacen n-1 pasadas y n-1 comparaciones en cada pasada. Por
consiguiente, el número de comparaciones es (n-1)(n-1) = n2 – 2n + 1, es decir, la complejidad es
0(n2).
▪Para las versiones mejoradas:
En el mejor de los casos, la ordenación por burbuja hace una sola iteración en el caso de una lista que ya está ordenada
en orden ascendente y, por tanto, su complejidad es 0(n).
En el peor de los casos se requieren (n-i-1) comparaciones y (n-i-1) intercambios. La ordenación completa requiere [n(n-
1)/2] comparaciones y un número similar de intercambios. La complejidad para el peor de los casos es 0(n2)
comparaciones y 0(n2) intercambios.
Comparativa
Algoritmo Complejidad (peor caso) Comentarios
Ordenación por selección 𝑂(𝑁 2 ) Mejor eficiencia respecto de la ordenación por burbuja. El
número de intercambios es menor que para el algoritmo de
inserción. Se prefiere el ordenamiento por selección cuando
se trabaja con arreglos.
Ordenación por inserción 𝑂(𝑁 2 ) Puede realizar menos comparaciones que el de selección,
dependiendo de que tan ordenado se encuentra el arreglo
originalmente. Se prefiere el ordenamiento por inserción
cuando se trabaja con listas enlazadas.
Ordenación por burbuja 𝑂(𝑁 2 ) Fácil de comprender. Se caracteriza por ser el menos eficiente
para un tamaño de entrada grande. No suele utilizarse.
¿En que consiste la búsqueda?
Consiste en encontrar un elemento especifico de un arreglo. Su relevancia se debe a que con
mucha frecuencia los ingenieros de software trabajan con grandes cantidades de datos
almacenados en registros y arreglos, y por ello será necesario determinar si un arreglo contiene
un valor que coincida con un cierto valor clave.
Algoritmos básicos de búsqueda