8

Click here to load reader

ORDENACIÓN POR INSERCIÓN DIRECTA

Embed Size (px)

Citation preview

Page 1: ORDENACIÓN POR INSERCIÓN DIRECTA

ORDENACIÓN INTERNA

Método de Inserción Directa

Page 2: ORDENACIÓN POR INSERCIÓN DIRECTA

La idea básica es insertar un elemento dado en el lugar que le corresponda de una parte ya ordenada del arreglo.

En un primer paso se considera que la parte ordenada está formada por el primer elemento del arreglo. Entonces se elige el elemento de la posición 2 y se inserta en la parte ordenada, de manera que si debe estar en la posición anterior se desplaza el elemento de la posición 1 hacia la derecha, haciéndole lugar, y se inserta en la posición 1. Como puede observarse se requerirá de una variable temporal que almacene el elemento a insertar. Seguidamente se considera la parte del arreglo a[1]..a[2] ordenada, se elige el tercer elemento y se siguen las mismas acciones. Este método se repite hasta que el último elemento, a[n], haya sido tratado. En resumen, el algoritmo puede describirse de la siguiente forma: Tomar un elemento en la posición i. Buscar su lugar en las posiciones anteriores. Mover hacia la derecha los restantes. Insertarlo.

Page 3: ORDENACIÓN POR INSERCIÓN DIRECTA

Ejemplo: con un círculo se indica el elemento que se inserta en cada pasada

y las flechitas indican los elementos que ha sido necesario desplazar para realizar la inserción.

8 14 5 9 3 23 17

1 2 3 4 5 6 7

Llaves iniciales

8 14 5 9 3 23 17i = 2

5 8 14 9 3 23 17i = 3

5 8 9 14 3 23 17i = 4

3 5 8 9 14 23 17i = 5

3 5 8 9 14 23 17i = 6

Page 4: ORDENACIÓN POR INSERCIÓN DIRECTA

3 5 8 9 14 17 23i = 7

1. Repetir con I desde 2 hasta NHacer AUX A[I] y K I -11.1 Repetir mientras (K ≥ 1) y (AUX < A[K])

Hacer A[K + 1] A[K] y K K -11.2 (Fin del ciclo del paso 1.1)

Hacer A[K + 1] AUX.

2. (Fin del ciclo del paso 1)

ALGORITMO

Page 5: ORDENACIÓN POR INSERCIÓN DIRECTA

CÓDIGO JAVA

Page 6: ORDENACIÓN POR INSERCIÓN DIRECTA

ANÁLISIS DE EFICIENCIA El número mínimo de comparaciones y movimientos entre claves se

produce cuando los elementos del arreglo ya están ordenados. En este caso se efectúan como máximo n-1 comparaciones y 0 movimientos entre elementos.

Cmin = n-1

El número máximo de comparaciones y movimientos entre elementos se produce cuando los elementos del arreglo están en orden inverso.

Cmax =

El número de comparaciones promedio, que es cuando los elementos aparecen en el arreglo en forma aleatoria, puede ser calculado mediante la suma de las comparaciones mínimas y máximas divididas entre 2.

Cmed =

Page 7: ORDENACIÓN POR INSERCIÓN DIRECTA

Respecto del número de movimientos, si el arreglo se encuentra ordenado no se realiza ninguno. Por lo tanto:

Mmin = 0

El número máximo de movimientos se presenta cuando el arreglo está en orden inverso:

Mmax =

El número de movimientos promedio, que se da cuando los elementos se encuentran en el arreglo en forma aleatoria, se calcula como la suma de los movimientos mínimos y máximos dividida entre 2:

Mmed =

Page 8: ORDENACIÓN POR INSERCIÓN DIRECTA

Ejemplos

Si se tiene que ordenar un arreglo que contiene 500 elementos:

a) Si el arreglo está ordenado serán necesarias: 499 comparaciones. 0 movimientos.

b) Si los elementos del arreglo se encuentran dispuestos en forma aleatoria se realizarán:

62, 624 comparaciones, en promedio. 62, 375 movimientos, en promedio.

c) Si los elementos del arreglo se encuentran en orden inverso serán necesarias:

124, 750 comparaciones. 124, 750 movimientos.