0% encontró este documento útil (0 votos)
35 vistas7 páginas

Tarea 3 Algoritmos

Este documento describe varios algoritmos de ordenación de tiempo lineal. Brevemente: a) La ordenación por conteo ordena una matriz en O(n) tiempo de forma estable. b) Quicksort puede ordenar una matriz en O(n) tiempo usando un pivote ficticio. c) La ordenación por inserción también es estable y ordena en lugar en O(n) tiempo.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
35 vistas7 páginas

Tarea 3 Algoritmos

Este documento describe varios algoritmos de ordenación de tiempo lineal. Brevemente: a) La ordenación por conteo ordena una matriz en O(n) tiempo de forma estable. b) Quicksort puede ordenar una matriz en O(n) tiempo usando un pivote ficticio. c) La ordenación por inserción también es estable y ordena en lugar en O(n) tiempo.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 7

PARTE 2: HEAPS

Ambos son simples. Para una pila, seguimos agregando elementos con
prioridad creciente, mientras que, en una cola, los agregamos con prioridad
decreciente.
Para la pila, podemos establecer la nueva prioridad en HEAP-
MAXIMUM(A) + 1.
Para la cola, debemos realizar un seguimiento y disminuirla en cada
inserción.
Ambos no son muy eficientes. Además, si la prioridad puede desbordarse o
subdesbordarse, en algún momento será necesario reasignar prioridades.
Parte 03: Lineal Time Sorting

a. La ordenación por conteo se ejecuta en tiempo O(n) y es un algoritmo


de ordenación estable
b. Podemos realizar una pasada de un algoritmo Quicksort PARTITION
alrededor del pivote x
= 0. Si es una PARTICIÓN de Lomuto, colocará todos los elementos
≤ 0 (todos los 0) en la izquierda y todos los elementos > 0 (todos los
1) a la derecha. Efectivamente, esto ordena la matriz.
Está en su lugar, y tiene un tiempo de ejecución Θ(n). Lo único es que
tenemos que trabajar.
con un pivote ficticio que no es necesariamente un elemento de la
matriz, y por lo tanto no tienes que preocuparte por colocar
correctamente ese pivote.
c. La clasificación por inserción es un algoritmo de clasificación en el
lugar. También es estable. Para ver esto considera A[i] = A[j] y yo < j.
Como i < j, A[i] se considerará en primer lugar. A[i] se agregará en la
posición correcta (cambiando) en la matriz ordenada A[1..i−1]. Esto
resultará en una matriz ordenada A[1..i] que contiene el A[i] original
en alguna posición k ≤ i. Entonces A[i] es ahora A[k].
Cuando se considera A[j], A[j] debe desplazarse hacia abajo a A[1..j −
1] del cual A[1..i] es un sub arreglo que contiene A[k] (originalmente
A[i]). A[j] no puede pasar por alto A[k] en el proceso de cambio
porque A[k] = A[j]. Por lo tanto, el original A[i] y las A[j] originales
conservarán su orden relativo.
d. parte (a) – Clasificación por conteo. Contando las ejecuciones de
clasificación en O (n) veces, y para las claves de b-bit con cada valor
de bit varía de 0 a 1, podemos ordenar en O(b(n + 2)) = O(bn) tiempo.
Primero revise la matriz colocando números en n cubos de acuerdo con la
cantidad de dígitos.
Dado que el número total de todos los dígitos es n, cada número tiene como
máximo n dígitos. Este proceso da O(n) pasos. Claramente, los números
con más dígitos son más grandes que los números con menos dígitos; por lo
tanto, solo queda ordenar los números dentro de cada cubo. Supongamos
que hay son números ki con dígitos i (por lo tanto, todos en el i cubo);
entonces podemos usar “radix sort” para ordenar
estos números dígito por dígito en el tiempo O(i ki) (i pases de tipo de
conteo, cada uno con ki números).
Por lo tanto, juntos tomará O(Σ i ki) pasos para ordenar todos los cubos. Sin
embargo, Σ i ki es igual al número total de dígitos n, porque cada cubo tiene
ki números con i dígitos cada uno es decir, i ki dígitos en total en el cubo.
Así, el número total de pasos es O(n) + O(Σ i ki) =
O(n)+ O(n)= O(n).

También podría gustarte