Algoritmos de ordenamiento - PowerPoint PPT Presentation

1 / 32
About This Presentation
Title:

Algoritmos de ordenamiento

Description:

Dada una secuencia de n datos a1, a2,...,an tomados de un conjunto con orden ... de los elementos que asocie la secuencia dada en una secuencia no decreciente: ... – PowerPoint PPT presentation

Number of Views:258
Avg rating:3.0/5.0
Slides: 33
Provided by: maricelaqu
Category:

less

Transcript and Presenter's Notes

Title: Algoritmos de ordenamiento


1
Algoritmos de ordenamiento
  • Objetivos
  • Analizar el desempeño de diferentes algoritmos
    empleados en el ordenamiento de números o cadenas
    de números o caracteres
  • Determinar que algoritmo es más eficiente para un
    problema particular dado.

2
Ordenamientos
  • Dada una secuencia de n datos a1, a2,,an tomados
    de un conjunto con orden lineal ?, el
    ordenamiento consiste en encontrar una
    permutación ? de los elementos que asocie la
    secuencia dada en una secuencia no decreciente
  • a?(1), a?(2),,a?(n) tal que a?(i) ? a?(i1) 1?
    iltn

3
Ordenamientos
  • Para la entrada 2,5,4,1,3 la permutación que
    produce el ordenamiento es ?(1)2, ?(2)5,
    ?(3)4, ?(4)1, y ?(5)3. Así
  • a?(4), a?(1), a?(5), a?(3), a?(2)
  • 1 ? 2 ? 3 ? 4 ? 5
  • Para una secuencia de n elementos, el número de
    permutaciones considerando n datos elementos es
    n!

4
Porqué?
  • Uso frecuente
  • Facilidad de uso de los datos
  • Diseño de algoritmos (preprocesamiento)
  • Algoritmos Avaros
  • Mínimo y Máximo
  • Mediana

5
Clasificación
  • Internos. Los datos reciben en memoria principal
    y son pocos
  • Externos. Los datos residen en memoria secundaria
  • Datos con estructura. Aprovechan la estructura de
    los datos a ordenar
  • Datos sin estructura. Se asume que los datos no
    tienen ninguna estructura.

6
Ordenamiento por comparación
  • Es necesario realizar comparaciones entre
    elementos
  • Ejemplos
  • Ordenamiento por selección
  • Ordenamiento por inserción
  • MergeSort
  • Heapsort
  • Quicksort

7
Ordenamiento por selección
  • Seleccionar repetidamente el elemento mas
    pequeño que queda, intercambiandolo con el
    primero
  • ASORTINGEXAMPLE
  • ASORTINGEXAMPLE
  • ASORTINGEXAMPLE
  • AAORTINGEXSMPLE
  • AAERTINGOXSMPLE ETC

8
Ordenamiento por selección
  • 1. for(i1 ilt(n-1) i)
  • 2. smalli
  • 3. for(ji1 jltn j)
  • 4. if(AjltAsmall)
  • 5. smallj
  • 6. tempAsmall
  • 7. AsmallAi
  • 8. Aitemp

9
Ordenamiento por selección
  • El método es simple, fuerza bruta
  • N-1)(N-2) 21N2/2 comparaciones,
  • N intercambios
  • Como cada record se mueve a lo mas una vez, tiene
    aplicaciones para ordenar archivos con records
    grandes y campos de ordenamiento pequeños

10
Ordenamiento por inserción
  • Este es el que se usa en las cartas el elemento
    a ser considerado se inserta en el lugar
    apropiado en una secuencia ordenada. Hay que
    mover a la derecha a veces muchos elementos.
  • ASORTINGEXAMPLE
  • ASO
  • AOSR
  • AORST
  • AORSTI ...ETC

11
Ordenamiento por inserción
  • 1. for j 2 to lengthA
  • 2. Key Aj
  • 3. i j-1
  • 4. while i gt 0 y Ai gt Key
  • 5. Ai1Ai
  • 6. ii-1
  • 7.
  • 8. Ai1 Key

12
Ordenamiento por inserción
  • Este ordenamiento usa N2/4 comparaciones y N2/8
    intercambios en promedio, el doble en el peor
    caso, pero es lineal en archivos casi ordenados

13
Árboles
  • Un árbol es un grafo dirigido acíclico que
    satisface las siguientes propiedades
  • Existe exactamente un vértice, llamado raíz, al
    que no llega ningún arco.
  • Cada vértice excepto la raíz tiene exactamente un
    arco entrante.
  • Existe un camino único de la raíz a cada vértice.

14
Árboles
  • La profundidad de v es la longitud del camino de
    la raíz a v.
  • La altura de v es la longitud del camino más
    largo de v a una hoja.
  • La altura de un árbol es la altura de la raíz.
  • El nivel de v en un árbol es la altura del árbol
    menos la profundidad de v.

15
Árbol de decisión
  • Consideración de las instrucciones de
    ramificación (condicionales).
  • En los ordenamientos, es razonable considerar un
    modelo en el cual todos los pasos de progresión
    sean ramificaciones de dos vías basadas en una
    comparación entre dos cantidades.

16
Árbol de decisión
  • La representación para un programa de
    ramificaciones es un árbol binario llamado árbol
    de decisión. Cada vértice interior representa una
    decisión. La prueba representada por la raíz se
    hace primero, y el control pasa, dependiendo del
    resultado, a uno de sus hijos. En general, el
    control continúa pasando de un vértice a uno de
    sus hijos hasta que se alcanza una hoja (salida).

17
Árbol de decisión
18
  • Lema. Un árbol binario de altura h tiene a lo más
    2h hojas.
  • Teorema. Un árbol para ordenar n elementos debe
    tener al menos n! hojas
  • Teorema. Un árbol de decisión para ordenar n
    datos tiene altura de al menos log n!
  • Corolario. Cualquier algoritmo de ordenamiento
    por comparaciones requiere al menos de cn log n
    comparaciones para ordenar n datos para alguna
    cgt0 y n grande.

19
MergeSort
  • Mergesort es el caso típico de divide y
    conquista y tiene la recurrencia MN2MN/2N i.e.
    NlogN aun en el peor caso, pero requiere espacio
    extra. El secreto esta en que el merge de dos
    secuencias ordenadas se puede hacer en tiempo
    lineal.

20
MergeSort
  • El MERGE
  • Dadas dos secuencias ordenadas a1..aM y
    b1bN
  • i1 j1
  • aM1INT_MAXbN1INT_MAX
  • For (k1kltMNk)
  • ck(ailtbj) ? ai bj
  • el método usa obviamente MN comparaciones

21
MergeSort
  • Si los datos se proporcionan como una lista
    ligada, se minimiza el movimiento de datos.

22
MergeSort
  • Procedure sort
  • 1. if ij then return xi
  • 2. else
  • 3. m(ij-1)/2
  • 4. return merge(sort(i,m), sort(m1,j))

23
Heapsort
  • Definición. Un heap es un arreglo A con valores.
    Representa un árbol binario completo que cumple
    Apadre(i) ? Ai
  • y está constituido de la siguiente forma
  • A1 contiene la raíz
  • A2i y A2i1contienen respectivamente, los
    hijos izquierdos y derechos de Ai
  • Ai/2 contiene al padre de Ai
  • Todo camino de una hoja a la raíz es una
    secuencia ordenada linealmente

24
Heapsort
  • Operaciones sobre un heap Insertar, Quitar el
    mayor, Reemplazar elementos a un heap. Todos
    estos requieren menos de 2 logN comparaciones.
  • Un elegante y eficiente método de ordenamiento
    sale de utilizar las operaciones sobre heaps.
    Además no usa memoria extra. Simplemente se
    construye un heap con los elementos a ordenar y
    despues se van quitando en el orden. Heapsort
    entonces requiere menos de 2Nlog N comparaciones
  • Ejemplo ASORTINGEXAMPLE

25
Heapsort
  • procedure HEAPIFY(i,j)
  • if i is not a leaf and if a son of i contains a
    larger elements than i does then
  • begin
  • let k be son of i with the largest element
  • interchange Ai and Ak
  • HEAPIFY(k, j)
  • end

26
Heapsort
  • procedure BUILDHEAP
  • for i ? n step - 1 until 1 do HEAPIFY(i,n)
  • Heapsort
  • BUILDHEAP
  • for i ? n step - 1 until 2 do
  • interchange A1 and Ai
  • HEAPIFY (1, i - 1)

27
QuickSort
  • Quicksort es tal vez el mas usado de los
    algoritmos. No usa mucho espacio auxiliar y en
    promedio requiere N log N operaciones. Pero es
    recursivo y en el peor caso usa N2 operaciones.

28
QuickSort
  • QuickSort(A,p,r)
  • if pltr
  • qparticion (A,p,r)
  • Quicksort(A,p,q)
  • Quicksort(A,q1,r)

29
QuickSort
  • particion(A,p,r)
  • xAp ip-1 jr1
  • while true
  • repeat jj-1 until ajltx
  • repeat ii1 until aigtx
  • if iltj exchange Ai,Aj
  • else return j

30
QuickSort
  • En el mejor caso, cada etapa de particionamiento
    divide el archivo exactamente a la mitad. En ese
    caso la recurrencia es CN2CN/2N i.e. NlogN
    pero esto no siempre sucede. Sedgewick pp 121
    para recurrencia precisa. Se puede eliminar la
    recursion usando un stack de manera explicita.

31
Aprovechamiento de la estructuraRadix Sort
  • Si tomamos en cuenta que los datos a ordenar se
    representan como un número en base M (la raiz).
    Hay varios de estos métodos. Uno muy sencillo es
    el llamado straight radix sort.
  • Simplemente poner en representación binaria y de
    derecha a izquierda poner los ceros antes de los
    unos

32
Aprovechamiento de la estructuraRadix Sort
  • Usa N log N comparaciones de bits. Requiere menos
    que Nb comparaciones para ordenar n numeros de b
    bits. Se ordenan n records con llaves de b bits
    en b/m pasos usando M2m espacio extra. Aunque
    usamos M2 aquí, lo mejor es que M sea grande. Si
    tomamos mb/4 resulta un sort lineal
Write a Comment
User Comments (0)
About PowerShow.com