M - PowerPoint PPT Presentation

About This Presentation
Title:

M

Description:

M TODOS DE CLASIFICACION DE DATOS (sort) EI, Profesor Ram n Castro Liceaga EI, Profesor Ram n Castro Liceaga QUE SON ORDENAMIENTOS DE DATOS ? SORT / ORDENACION.- – PowerPoint PPT presentation

Number of Views:35
Avg rating:3.0/5.0
Slides: 21
Provided by: RamonCast7
Category:
Tags: merge | sort

less

Transcript and Presenter's Notes

Title: M


1
MÉTODOS DE CLASIFICACION DE DATOS (sort)
2
QUE SON ORDENAMIENTOS DE DATOS ?
  • SORT / ORDENACION.-
  • Es reagrupar un grupo de datos en una secuencia
    especifica de orden
  • (mayor -gt menor o menor -gt mayor)

3
LA ORDENACION DE ELEMENTOS PUEDE SER
  • Ordenación Interna.- En memoria principal
    (arrays, listas).
  • Ordenación Externa.- En memoria secundaria.
    (dispositivos de almacenamiento externo.-
    archivos y Bases de datos).

4
TIPOS DE ORDENACION
  • Los mas usuales son
  • POR INTERCAMBIO (Compara e intercambia
    elementos.- Burbuja)
  • POR SELECCIÓN (Selecciona el mas pequeño y lo
    intercambia)
  • POR INSERSION (Inserta los elementos en una
    sublista ordenada)
  • METODO SHELL (Es una insersión mejorada)
  • ORDENACION RAPIDA (Quick Sort.- divide una lista
    en dos partes)

5
ALGORITMO DE EJEMPLO DE UN ORDENAMIENTO
PROBLEMA En una Empresa el área de Recursos
Humanos requiere ordenar 3 números de empleados
obteniendo la siguiente salida.
6
POR INTERCAMBIO (Burbuja o bubble sort )
  • El bubble sort, también conocido como
    ordenamiento burbuja, funciona de la siguiente
    manera
  • Se va comparando cada elemento del arreglo con el
    siguiente si un elemento es mayor que el que le
    sigue, entonces se intercambian esto producirá
    que en el arreglo quede como su último elemento,
    el más grande.
  • Este proceso deberá repetirse recorriendo todo
    el arreglo hasta que no ocurra ningún
    intercambio.
  • Los elementos que van quedando ordenados ya no se
    comparan. "Baja el más pesado".

7
EJEMPLO Ordenamiento por Burbuja o bubble sort
Consiste en comparar pares de elementos
adyacentes e intercambiarlos entre sí hasta que
estén todos ordenados. Sea un array de 6 números
de empleados 40,21,4,9,10,35 Primera
pasada 21,40,4,9,10,35 lt-- Se cambia el 21 por
el 40. 21,4,40,9,10,35 lt-- Se cambia el 40 por
el 4. 21,4,9,40,10,35 lt-- Se cambia el 9 por el
40. 21,4,9,10,40,35 lt-- Se cambia el 40 por el
10. 21,4,9,10,35,40 lt-- Se cambia el 35 por el
40. Segunda pasada 4,21,9,10,35,40 lt-- Se
cambia el 21 por el 4. 4,9,21,10,35,40 lt-- Se
cambia el 9 por el 21. 4,9,10,21,35,40 lt-- Se
cambia el 21 por el 10. Ya están ordenados, pero
para comprobarlo habría que acabar esta
segunda comprobación y hacer una tercera.
8
// Definimos una función donde Aarreglo y
Ntamaño int bubblesort(int A,int N)
int i,j,AUX for(i2iltNi)
//avanza for(jNjgtij--)
//retrocede
if(Aj-1gtAj) //si a gt p intercambio
AUXAj-1
Aj-1Aj
AjAUX

return 1
9
Práctica No. 03
  • Hacer un programa que ordene por el método de la
    burbuja Bubblesort en forma ascendente un vector
    de 10 números de empleados de una empresa.
  • Algoritmo
  • 1.- Llenar el vector con los 10 números de los
    empleados
  • 2.- Mostrar los números a ordenar
  • 3.- Ordenar el vector por el método bubblesort
  • 4.- Mostrar el vector ordenado en forma
    ascendente
  • Actividades adicionales
  • a) hacer un ordenamiento descendete para 30
    empleados.
  • b) Hacer un ordenamiento ascendente para 20
    nombres de empleados con 15 caracteres c/u
  • Tiempo aprox. 15 mts.

10
POR SELECCION
  • Este algoritmo trabaja seleccionando el dato más
    pequeño a ser ordenado que aún esta en la lista,
    y luego haciendo un intercambio con el elemento
    en la siguiente posición.

ejemplo, si tenemos el array 40,21,4,9,10,35,
los pasos a seguir son 4,21,40,9,10,35 lt-- Se
coloca el 4, el más pequeño, en primera posición
se cambia el 4 por el 40. 4,9,40,21,10,35
lt-- Se coloca el 9, en segunda posición se
cambia el 9 por el 21. 4,9,10,21,40,35 lt-- Se
coloca el 10, en tercera posición se cambia el
10 por el 40. 4,9,10,21,40,35 lt-- Se coloca el
21, en tercera posición ya está
colocado. 4,9,10,21,35,40 lt-- Se coloca el 35,
en tercera posición se cambia el 35 por el 40.
11
Código fuente por selección. void
selectionSort(int numbers, int array_size)
int i, j int min, temp for (i
0 i lt array_size-1 i) min
i for (j i1 j lt array_size
j) if
(numbersj lt numbersmin)
min j temp
numbersi numbersi
numbersmin
numbersmin temp

12
POR INSERSION
  • El insertion sort trabaja insertando el numero en
    su lugar correspondiente al final de una sublista
    ordenada.

En este método lo que se hace es tener una
sublista ordenada de elementos del array e ir
insertando el resto en el lugar adecuado para que
la sublista no pierda el orden. La sublista
ordenada se va haciendo cada vez mayor, de modo
que al final la lista entera queda ordenada.
Para el ejemplo 40,21,4,9,10,35, se
tiene 40,21,4,9,10,35 lt-- La primera sublista
ordenada es 40. Insertamos el
21 40,40,4,9,10,35 lt-- aux21 21,40,4,9,10,35
lt-- Ahora la sublista ordenada es
21,40. Insertamos el 4 21,40,40,9,10,35 lt--
aux4
13
POR INSERSION (continuacion)
21,21,40,9,10,35 lt-- aux4 4,21,40,9,10,35
lt-- Ahora la sublista ordenada es
4,21,40. Insertamos el 9 4,21,40,40,10,35
lt-- aux9 4,21,21,40,10,35 lt--
aux9 4,9,21,40,10,35 lt-- Ahora la sublista
ordenada es 4,9,21,40. Insertamos el
10 4,9,21,40,40,35 lt-- aux10 4,9,21,21,40,35
lt-- aux10 4,9,10,21,40,35 lt-- Ahora la
sublista ordenada es 4,9,10,21,40. Y por último
insertamos el 35 4,9,10,21,40,40 lt--
aux35 4,9,10,21,35,40 lt-- El array está
ordenado.
14
Código fuente. void insertionSort(int numbers,
int array_size) int i, j, index for (i1 i lt
array_size i) index numbersi j
i while ((j gt 0) (numbersj-1 gt index))
numbersj numbersj-1 j j -
1 numbersj index
15
POR METODO SHELL (Ordenamiento por bloques de
datos)
  • El algoritmo realiza multiples pases a través de
    la lista, y en cada pasada ordena un numero igual
    de items. El tamaño del set de datos (también
    llamado distancia o intervalo) a ser ordenado va
    creciendo a medida que el algoritmo recorre el
    array hasta que finalmente el set esta compuesto
    por todo el array en si mismo. El tamaño del set
    de datos usado tiene un impacto significativo en
    la eficiencia del algoritmo. Algunas
    implementaciones de este algoritmo tienen una
    función que permite calcular el tamaño óptimo del
    set de datos para un array determinado.

16
POR METODO SHELL
Por ejemplo, lo pasos para ordenar el array
40,21,4,9,10,35 mediante el método de Shell
serían Salto3 Primera pasada 9,21,4,40,10,35
lt-- se intercambian el 40 y el
9. 9,10,4,40,21,35 lt-- se intercambian el 21 y
el 10. Salto1 Primera pasada 9,4,10,40,21,35
lt-- se intercambian el 10 y el
4. 9,4,10,21,40,35 lt-- se intercambian el 40 y
el 21. 9,4,10,21,35,40 lt-- se intercambian el
35 y el 40. Segunda pasada 4,9,10,21,35,40
lt-- se intercambian el 4 y el 9. Con sólo 6
intercambios se ha ordenado el array, cuando por
inserción se necesitaban muchos más.
17
void shellSort(int numbers, int
array_size) int i, j, increment,
temp increment 3 while (increment gt 0) for
(i0 i lt array_size i) j i temp
numbersi while ((j gt increment)
(numbersj-increment gt temp)) numbersj
numbersj - increment j j -
increment numbersj temp if (increment/2
! 0) increment increment/2 else if (increment
1) increment 0 else increment 1
18
ORDENACION RAPIDA (Quick Sort) algoritmo
recursivo.
  • El Quick sort es un algoritmo del estilo divide y
    venceras. Es bastante más rápido que el merge
    sort.
  • El algoritmo de recursión consiste en una serie
    de cuatro pasos
  • 1. Si hay menos de un elemento a ser ordenado
    retorna inmediatamente (termina).
  • 2. Tomar un elemento del vector que sirve como
    muestra
  • 3. Dividir el array en dos partes, una con los
    elementos mayores y una con los elementos menores
    al muestra.
  • 4. Repite recursivamente el algoritmo para las
    dos mitades del array original hasta que queda
    ordenado.

19
Actividad adicional Hacer un programa en C, C
que muestre un menú que integre los métodos de
ordenamientos anteriormente vistos.
20
GRACIAS POR TU ATENCION
Write a Comment
User Comments (0)
About PowerShow.com