SlideShare una empresa de Scribd logo
1
Ordenamiento en tiempo lineal
y Estadísticas de orden
Agustín J. González
ELO320: Estructura de Datos y
Algoritmos
1er. Sem 2002
2
Idea
• Hasta ahora los algoritmos vistos se basan en la
comparación de números para obtener el orden.
• Se puede probar que los algoritmos basados en esta técnica
tienen como cota inferior un costo (n lg n) .
• Exploraremos dos algoritmos: CountingSort y RadixSort.
• Estos algoritmos suponen un rango acotado para la entrada
y logran hacer un ordenamiento en tiempo cercano a lineal.
3
CountingSort
• Asume que cada uno de los n elementos a ordenar es un entero en el
rango 1 a k , k  n.
• La idea es determinar, para cada entrada x, el número de elementos
menor que x. Así es posible ubicar x directamente en la posición
dentro del arreglo.
• Se A[1..n] el arreglo de entrada. CountingSort utiliza un arreglo
C[1..k] y genera el resultado en otro arreglo, digamos B[1..n].
3 | 6 | 4 | 1 | 3 | 4 | 1 | 4
2 | 0 | 2 | 3 | 0 | 1
A
C
2 | 2 | 4 | 7 | 7 | 8
C
| | | | | | 4 |
2 | 2 | 4 | 6 | 7 | 8
B
C
| 1 | | | | | 4 |
1 | 2 | 4 | 6 | 7 | 8
B
C
4
Algoritmo
• CountingSort(A,B,k) {
for (i=1; i< = k; i++)
C[i] = 0;
for (j=1; j< = Largo(A); j++)
C[A[j]]++;
/* hasta aquí C [i] contiene el número de elementos igual a i*/
for (i=2; i< = k; i++)
C[i]+=C[i-1];
/* hasta aquí C [i] contiene el número de elementos menor
que o igual a i*/
for ( j= Largo (A); j > 0; j--) {
B[C[A[j]]] = A[j];
C[A[j]] --;
}
}
(k)
(k)
(n)
(n+k)
= (n), k<n
(n)
5
Radix Sort
• La idea es ordenar los números dígito por dígito.
329
355
436
457
657
720
839
329
457
657
839
436
720
355
720
355
436
457
657
329
839
720
329
436
839
355
457
657
• Se ordena desde el menos al más significativo.
• Cada vez se aplica CountingSort.
• Para ordenar d dígitos se toma un tiempo (dn+dk)
6
Algoritmo Radix sort
• RadixSort(A, d) {
for (i=1; i <= d; i++)
use un ordenamiento estable para ordenar arreglo A sobre digito i;
}
• Un algoritmo de ordenamiento es estable si el orden de elementos iguales
es preservado.
• Cuando se usa CountingSort el costo en tiempo es (dn+dk). Si k es acotado y
d también, esto conduce a un tiempo (n).
• Desgraciadamente countingSort requiere espacios de memoria adicionales al
requerido para mantener los datos a ordenar. Por ello, si la capacidad de
memoria es un factor importante, quicksort es preferible.
• Otra característica interesante de los algoritmos de ordenamiento es si el
ordenamiento es el el lugar o requiere memoria adicional. Cómo es heapsort?
Quicksort? Insertion sort? Mergesort?
7
Medianas y Estadísticas de Orden
Agustín J. González
ELO320: Estructura de Datos y Algoritmos
1 er. Sem. 2002
8
Conceptos
• La estadística de orden i-ésimo de un conjunto de n
elementos es el elemento i-ésimo más pequeño.
• El mínimo es la estadística de primer orden.
• La mediana es el punto en la “mitad del camino”
• La mediana se ubicas en i=  (n+1)/2  e i=(n+1)/2
• Problema de selección:
Entrada: un conjunto de n números y un número i 1<= i <= n
Salida: El elemento x tal que es mayor que exactamente otros
i-1.
9
Mínimo y máximo
• Mínimo(A)
min = A[1;
for (i=2; i<=length(A); i++)
if (min > A[i )
min = A[i;
• Puede ser hecho en tiempo (n).
• Problema de selección: Basta usar una forma adaptada de
Randomized_Quicksort. En ésta sólo nos preocupamos de donde se encuentra
la estadística del orden que buscamos.
• Randomized_Select(A, p,r,i)
if (p==r)
return A[p;
q = Randomized_Partition(A,p,r);
k = q -p+1;
if (i <= k)
return Randomized_Select(A,p,q,i);
else
return Randomized_Select(A, q+1, r, i-k);
• El tiempo de este algoritmo es (n) en promedio y su peor caso es (n2).

Más contenido relacionado

Similar a LinearSortOrderSatatistics.ppt

Similar a LinearSortOrderSatatistics.ppt (20)

Arreglos unidimensionales
Arreglos unidimensionalesArreglos unidimensionales
Arreglos unidimensionales
 
Porto
PortoPorto
Porto
 
Inf 2316(proyecto)
Inf 2316(proyecto)Inf 2316(proyecto)
Inf 2316(proyecto)
 
Conceptos básicos de R
Conceptos básicos de RConceptos básicos de R
Conceptos básicos de R
 
Unidad 7. Arreglos Sullin Santaella
Unidad 7. Arreglos Sullin SantaellaUnidad 7. Arreglos Sullin Santaella
Unidad 7. Arreglos Sullin Santaella
 
Resvecmat
ResvecmatResvecmat
Resvecmat
 
Res vecmat8
Res vecmat8Res vecmat8
Res vecmat8
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Análisis de complejidad introducción notación big o
Análisis de complejidad   introducción notación big oAnálisis de complejidad   introducción notación big o
Análisis de complejidad introducción notación big o
 
3 programacion estructurada
3 programacion estructurada3 programacion estructurada
3 programacion estructurada
 
Módulo 3
Módulo 3Módulo 3
Módulo 3
 
Guia de-estructura-de-datos
Guia de-estructura-de-datosGuia de-estructura-de-datos
Guia de-estructura-de-datos
 
Computacion
ComputacionComputacion
Computacion
 
algoritmos distribuidos
algoritmos distribuidosalgoritmos distribuidos
algoritmos distribuidos
 
1 unidad metodos numericos
1 unidad metodos numericos1 unidad metodos numericos
1 unidad metodos numericos
 
Mathematica para cálculo iii (archivo pdf)
Mathematica para cálculo iii (archivo pdf)Mathematica para cálculo iii (archivo pdf)
Mathematica para cálculo iii (archivo pdf)
 
Resolución de problemas con java
Resolución de problemas con javaResolución de problemas con java
Resolución de problemas con java
 
Tipos de datos en R
Tipos de datos en RTipos de datos en R
Tipos de datos en R
 
Analisis Clase2
Analisis  Clase2Analisis  Clase2
Analisis Clase2
 
Métodos Directos
Métodos DirectosMétodos Directos
Métodos Directos
 

Más de jlmansilla

maximumFlow.ppt
maximumFlow.pptmaximumFlow.ppt
maximumFlow.pptjlmansilla
 
elementaryAlgorithms.ppt
elementaryAlgorithms.pptelementaryAlgorithms.ppt
elementaryAlgorithms.pptjlmansilla
 
binarySearchTree.ppt
binarySearchTree.pptbinarySearchTree.ppt
binarySearchTree.pptjlmansilla
 
NP_Completitud.ppt
NP_Completitud.pptNP_Completitud.ppt
NP_Completitud.pptjlmansilla
 
PERDIDA_EN_UNA_RED_DE_FIBRA_OPTICA.pptx
PERDIDA_EN_UNA_RED_DE_FIBRA_OPTICA.pptxPERDIDA_EN_UNA_RED_DE_FIBRA_OPTICA.pptx
PERDIDA_EN_UNA_RED_DE_FIBRA_OPTICA.pptxjlmansilla
 

Más de jlmansilla (11)

NTFSFS.ppt
NTFSFS.pptNTFSFS.ppt
NTFSFS.ppt
 
maximumFlow.ppt
maximumFlow.pptmaximumFlow.ppt
maximumFlow.ppt
 
NTFS.ppt
NTFS.pptNTFS.ppt
NTFS.ppt
 
heapsort.ppt
heapsort.pptheapsort.ppt
heapsort.ppt
 
hashing.ppt
hashing.ppthashing.ppt
hashing.ppt
 
elementaryAlgorithms.ppt
elementaryAlgorithms.pptelementaryAlgorithms.ppt
elementaryAlgorithms.ppt
 
binarySearchTree.ppt
binarySearchTree.pptbinarySearchTree.ppt
binarySearchTree.ppt
 
greedy.ppt
greedy.pptgreedy.ppt
greedy.ppt
 
NP_Completitud.ppt
NP_Completitud.pptNP_Completitud.ppt
NP_Completitud.ppt
 
BasicC++.ppt
BasicC++.pptBasicC++.ppt
BasicC++.ppt
 
PERDIDA_EN_UNA_RED_DE_FIBRA_OPTICA.pptx
PERDIDA_EN_UNA_RED_DE_FIBRA_OPTICA.pptxPERDIDA_EN_UNA_RED_DE_FIBRA_OPTICA.pptx
PERDIDA_EN_UNA_RED_DE_FIBRA_OPTICA.pptx
 

Último

trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxlasocharfuelan123
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsFederico Toledo
 
infografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareinfografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareoscartorres960914
 
MODULO BASICO DE WORD - I CICLO.DOC.DOC.
MODULO BASICO DE WORD - I CICLO.DOC.DOC.MODULO BASICO DE WORD - I CICLO.DOC.DOC.
MODULO BASICO DE WORD - I CICLO.DOC.DOC.CarmenFlores88207
 
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA  DE TRABAJO DE CREACION DE TABLAS EN WORDFICHA  DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORDRobertSotilLujn
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfjuanjosebarreiro704
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...cuentauniversidad34
 
Virus informático (tipos y opciones para prevenir)
Virus informático (tipos y opciones para prevenir)Virus informático (tipos y opciones para prevenir)
Virus informático (tipos y opciones para prevenir)edisonquispecalderon
 
Documento colaborativo. Solución del caso GA1-240201526-AA6-EV01.pdf
Documento colaborativo. Solución del caso GA1-240201526-AA6-EV01.pdfDocumento colaborativo. Solución del caso GA1-240201526-AA6-EV01.pdf
Documento colaborativo. Solución del caso GA1-240201526-AA6-EV01.pdfHAROLD IVANOVICH
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equiponicromante2000
 

Último (10)

trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docx
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMs
 
infografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareinfografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de software
 
MODULO BASICO DE WORD - I CICLO.DOC.DOC.
MODULO BASICO DE WORD - I CICLO.DOC.DOC.MODULO BASICO DE WORD - I CICLO.DOC.DOC.
MODULO BASICO DE WORD - I CICLO.DOC.DOC.
 
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA  DE TRABAJO DE CREACION DE TABLAS EN WORDFICHA  DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
 
Virus informático (tipos y opciones para prevenir)
Virus informático (tipos y opciones para prevenir)Virus informático (tipos y opciones para prevenir)
Virus informático (tipos y opciones para prevenir)
 
Documento colaborativo. Solución del caso GA1-240201526-AA6-EV01.pdf
Documento colaborativo. Solución del caso GA1-240201526-AA6-EV01.pdfDocumento colaborativo. Solución del caso GA1-240201526-AA6-EV01.pdf
Documento colaborativo. Solución del caso GA1-240201526-AA6-EV01.pdf
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
 

LinearSortOrderSatatistics.ppt

  • 1. 1 Ordenamiento en tiempo lineal y Estadísticas de orden Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem 2002
  • 2. 2 Idea • Hasta ahora los algoritmos vistos se basan en la comparación de números para obtener el orden. • Se puede probar que los algoritmos basados en esta técnica tienen como cota inferior un costo (n lg n) . • Exploraremos dos algoritmos: CountingSort y RadixSort. • Estos algoritmos suponen un rango acotado para la entrada y logran hacer un ordenamiento en tiempo cercano a lineal.
  • 3. 3 CountingSort • Asume que cada uno de los n elementos a ordenar es un entero en el rango 1 a k , k  n. • La idea es determinar, para cada entrada x, el número de elementos menor que x. Así es posible ubicar x directamente en la posición dentro del arreglo. • Se A[1..n] el arreglo de entrada. CountingSort utiliza un arreglo C[1..k] y genera el resultado en otro arreglo, digamos B[1..n]. 3 | 6 | 4 | 1 | 3 | 4 | 1 | 4 2 | 0 | 2 | 3 | 0 | 1 A C 2 | 2 | 4 | 7 | 7 | 8 C | | | | | | 4 | 2 | 2 | 4 | 6 | 7 | 8 B C | 1 | | | | | 4 | 1 | 2 | 4 | 6 | 7 | 8 B C
  • 4. 4 Algoritmo • CountingSort(A,B,k) { for (i=1; i< = k; i++) C[i] = 0; for (j=1; j< = Largo(A); j++) C[A[j]]++; /* hasta aquí C [i] contiene el número de elementos igual a i*/ for (i=2; i< = k; i++) C[i]+=C[i-1]; /* hasta aquí C [i] contiene el número de elementos menor que o igual a i*/ for ( j= Largo (A); j > 0; j--) { B[C[A[j]]] = A[j]; C[A[j]] --; } } (k) (k) (n) (n+k) = (n), k<n (n)
  • 5. 5 Radix Sort • La idea es ordenar los números dígito por dígito. 329 355 436 457 657 720 839 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436 839 355 457 657 • Se ordena desde el menos al más significativo. • Cada vez se aplica CountingSort. • Para ordenar d dígitos se toma un tiempo (dn+dk)
  • 6. 6 Algoritmo Radix sort • RadixSort(A, d) { for (i=1; i <= d; i++) use un ordenamiento estable para ordenar arreglo A sobre digito i; } • Un algoritmo de ordenamiento es estable si el orden de elementos iguales es preservado. • Cuando se usa CountingSort el costo en tiempo es (dn+dk). Si k es acotado y d también, esto conduce a un tiempo (n). • Desgraciadamente countingSort requiere espacios de memoria adicionales al requerido para mantener los datos a ordenar. Por ello, si la capacidad de memoria es un factor importante, quicksort es preferible. • Otra característica interesante de los algoritmos de ordenamiento es si el ordenamiento es el el lugar o requiere memoria adicional. Cómo es heapsort? Quicksort? Insertion sort? Mergesort?
  • 7. 7 Medianas y Estadísticas de Orden Agustín J. González ELO320: Estructura de Datos y Algoritmos 1 er. Sem. 2002
  • 8. 8 Conceptos • La estadística de orden i-ésimo de un conjunto de n elementos es el elemento i-ésimo más pequeño. • El mínimo es la estadística de primer orden. • La mediana es el punto en la “mitad del camino” • La mediana se ubicas en i=  (n+1)/2  e i=(n+1)/2 • Problema de selección: Entrada: un conjunto de n números y un número i 1<= i <= n Salida: El elemento x tal que es mayor que exactamente otros i-1.
  • 9. 9 Mínimo y máximo • Mínimo(A) min = A[1; for (i=2; i<=length(A); i++) if (min > A[i ) min = A[i; • Puede ser hecho en tiempo (n). • Problema de selección: Basta usar una forma adaptada de Randomized_Quicksort. En ésta sólo nos preocupamos de donde se encuentra la estadística del orden que buscamos. • Randomized_Select(A, p,r,i) if (p==r) return A[p; q = Randomized_Partition(A,p,r); k = q -p+1; if (i <= k) return Randomized_Select(A,p,q,i); else return Randomized_Select(A, q+1, r, i-k); • El tiempo de este algoritmo es (n) en promedio y su peor caso es (n2).