Vous êtes sur la page 1sur 10

TALLER 2 PROGRAMACION DISTRIBUIDA

PRESENTADO POR
ASDRUBAL ANDRES VÉLEZ VÉLEZ
LUIS EDIN IBARGUEN MOSQUERA
JHON ALEJANDO GIRALDO MEJIA

PRESENTADO A
CARLOS ALBERTO LONDOÑO LOAIZA
ING DE SISTEMAS

CORPORACION DE ESTUDIOS TECNOLOGICOS DEL NORTE DEL VALLE


COTECNOVA

CARTAGO VALLE DEL CAUCA

22-04-20
IMPLEMENTACIÓN DE LOS MÉTODOS DE ORDENAMIENTO EN PYTHON

Resumen: Principalmente en este data group means moving the data or


documento se hablara sobre los métodos references so that they remain in a
de ordenamiento que se va a implementar sequence representing an order. The
en el lenguaje Python. Estos métodos de methods of ordering this is a topic in this
ordenamiento se dicen que son child article: by insertion, by blending, by
operaciones de arreglos de los registros heap type, by quicksort, by count and by
de una tabla en algún orden de acuerdo al radix type.
criterio de ordenamiento, ordenar un
Keywords: python, ordering methods,
grupo de datos significa mover los datos o
data, order, groups, insertion, mixing,
referencias para que queden en una
heap sort.
secuencia que representa un orden. Los
métodos de ordenamiento que se van a Introducción: Ordenar es simplemente
hablar en este artículo son: por inserción, colocar la información de una manera
por mezcla, por heap sort, por quicksort, específica basándose en un criterio de
por counting sort y por radix sort. ordenamiento. El propósito principal de
estos ordenamientos es el de facilitar las
Palabras claves: python, métodos de
búsquedas de los registros del conjunto de
ordenamiento, datos, orden, grupos,
datos. Un ordenamiento se conviene
inserción, mezcla, heap sort.
usarlo cuándo se requiere hacer una
Abstract: This document mainly cantidad considerable de búsquedas y es
discusses the methods of ordering to be importante el factor tiempo.
implemented in the Python language.
En este caso, nos servirán para ordenar
These sorting methods are said to be
listas con valores asignados
arranging the records of a table in some
aleatoriamente. Nos centraremos en los
order according to the sort order, sorting a
métodos más populares, presentando el Toma su nombre debido a la similitud de
código escrito en Python, de cada ordenamiento de los arboles binarios.
algoritmo.
Ordenamiento por mezcla: Esta basado
Algoritmos Usados: en la técnica de “divide y vencerás “.
Primero toma el arreglo original de datos,
Ordenamiento por inserción: existen
lo divide en dos partes del mismo tamaño
dos clases de ordenamiento por inserción
cada una, y lo sigue dividiendo hasta que
uno es el de inserción directa y el otro es
solo quede un elemento. Cada una de las
por inserción binaria:
divisiones se ordena de manera separada
Ordenamiento por inserción directa: y luego se unen para formar el arreglo ya
Este algoritmo se basa en hacer ordenado. Este algoritmo divide
comparaciones, así que para que realice inicialmente la lista hasta su mínimo
su trabajo de ordenación son valor y luego ordena el arreglo.
imprescindibles dos cosas: un array o
Ordenamiento por montones (Heap
estructura similar de elementos
Sort): Es un algoritmo de ordenación
comparables y un criterio claro de
basado en comparaciones de elementos
comparación, tal que dados dos elementos
que utiliza un heap para ordenarlos.
nos diga si están en orden o no. En cada
También podemos decir que es un
iteración del ciclo externo los elementos 0
algoritmo de ordenación no recursivo, no
a i forman una lista ordenada.
estable, con complejidad computacional.
Ordenamiento por inserción binaria: es
Ordenamiento rápido (Quick Sort): El
una mejora del método de inserción
ordenamiento rápido (quick sort en
directa. La mejora consiste en realizar
inglés) es un algoritmo basado en la
una búsqueda binaria en lugar de una
técnica de divide y vencerás, que permite,
búsqueda secuencial, para insertar un
en promedio, ordenar n elementos en un
elemento en la parte izquierda del arreglo,
tiempo proporcional a n log n. Esta es la
que ya se encuentra ordenado.
técnica de ordenamiento más rápida
El proceso al igual que el de Inserción
conocida. Fue desarrollada por C. Antony
Directa, se repite desde el 2do hasta el n-
R. Hoare en 1960. El algoritmo original
ésimo elemento.
es recursivo, pero se utilizan versiones
iterativas para mejorar su rendimiento ideal para scripting y desarrollo rápido de
(los algoritmos recursivos son en general aplicaciones en diversas áreas y sobre la
más lentos que los iterativos, y consumen mayoría de las plataformas.
más recursos).
El intérprete de Python puede extenderse
Ordenamiento por conteo (counting fácilmente con nuevas funcionalidades y
sort): este método utiliza un arreglo tipos de datos implementados en C o C++
auxiliar para contabilizar el número de (u otros lenguajes accesibles desde C).
llaves que son mayores que la llave Python también puede usarse como un
actual. El arreglo de contadores, lenguaje de extensiones para aplicaciones
especifica la posición final donde debería personalizables.
estar cada elemento.
Código de los algoritmos:
Ordenamiento por Radix Sort: Es un
Método de Inserción Directa:
algoritmo de ordenamiento que ordena
enteros procesando sus dígitos de forma def insercionDirecta(lista, tam):
for i in range(1, tam):
individual. Como los enteros pueden
v = lista[i]
representar cadenas de caracteres por j=i-1
while j >= 0 and lista[j] > v:
ejemplo: nombres o fechas; Sin embargo
lista[j + 1] = lista[j]
radix sort no está limitado sólo a los j=j-1
lista[j + 1] = v
enteros. Se clasifica en: Digito menos
significativo (LSD) O Digito significativo Método de Inserción Binaria:
(MSD). def insercionBinaria(lista, tam):
for i in range(1, tam):
Lenguaje de programación: Python es aux = lista[i]
izq = 0
un lenguaje de programación poderoso y der = i - 1
fácil de aprender. Cuenta con estructuras while izq <= der:
m = (izq + der) / 2
de datos eficientes y de alto nivel y un if aux < lista[m]:
enfoque simple pero efectivo a la der = m - 1
else:
programación orientada a objetos. La izq = m + 1
elegante sintaxis de Python y su tipado j=i-1
while j >= izq:
dinámico, junto con su naturaleza lista[j + 1] = lista[j]
interpretada, hacen de éste un lenguaje
j=j-1 Metodo por montones (heapsort)
lista[izq] = aux
def heapsort(aList):
length = len(aList) - 1
Método de mezcla (mergesort):
leastParent = length / 2
def mergeSort(alist):
for i in range(leastParent, -1, -1):
if len(alist)>1:
moveDown(aList, i, length)
mid = len(alist)//2
for i in range(length, 0, -1):
lefthalf = alist[:mid]
if aList[0] > aList[i]:
righthalf = alist[mid:]
swap(aList, 0, i)
mergeSort(lefthalf)
moveDown(aList, 0, i - 1)
mergeSort(righthalf)
Método por Quick Sort:
i=0
j=0
def quickSort(alist):
k=0
quickSortHelper(alist,0,len(alist)-1)
while i < len(lefthalf) and j <
len(righthalf):
def quickSortHelper(alist,first,last):
if lefthalf[i] < righthalf[j]:
if first<last:
alist[k]=lefthalf[i]
i=i+1
splitpoint = partition(alist,first,last)
else:
alist[k]=righthalf[j]
quickSortHelper(alist,first,splitpoint-
j=j+1
1)
k=k+1
while i < len(lefthalf):
quickSortHelper(alist,splitpoint+1,last)
alist[k]=lefthalf[i]
i=i+1
Método de counting sort:
k=k+1
def counting_sort(array, maxval):
while j < len(righthalf):
n = len(array)
alist[k]=righthalf[j]
m = maxval + 1
j=j+1
count = [0] * m
k=k+1
for a in array:
count[a] += 1
i=0 Conclusión: Los métodos de
for a in range(m): ordenamiento de datos son muy útiles, ya
for c in range(count[a]): que se puede ordenar los registros de una
array[i] = a tabla en algún orden secuencial de
i += 1 acuerdo al método que se utilice, el cual
return array puede ser numérico, alfabético o
alfanumérico, ascendente o descendente.
Método por Radix Sort: Facilita las búsquedas de cantidades de
def radix_sort(random_list): registros en un moderado tiempo, en
len_random_list = len(random_list) modelo de eficiencia. Mediante sus
modulus = 10 técnicas podemos colocar listas detrás de
div = 1 otras y luego ordenarlas, como también se
while True: puede comparar los valores, e
new_list = [[], [], [], [], [], [], [], [], intercambiarlos si no se encuentran en sus
[], []] posiciones correctas.
for value in random_list:
least_digit = value % modulus Recomendaciones:
least_digit /= div
 Para hacer este tipo de trabajos de
new_list[least_digit].append(value) comparar los métodos con hilos y
modulus = modulus * 10 sin hilos se necesita un
div = div * 10 computador con un procesador de
if len(new_list[0]) == gama alta.
len_random_list:  Es tener un conocimiento básico
return new_list[0] de los métodos de ordenamiento y
random_list = [] de los hilos en el lenguaje de
rd_list_append = random_list.append programación en python.
for x in new_list: Tener en cuenta que python tiene
for y in x: limitada la recursividad a cien
rd_list_append(y)
datos, implementar comando para Computador Usado:
aumentar dicha recursividad Fabricante LENOVO
Referentes bibliográficos: Modelo Optiplex 3040
https://saforas.wordpress.com/201 Procesador Intel(R) COre(TM) i5-
1/01/24/metodos-de- 6100 CPU @4.70GHz 4.70 GHz
ordenamiento-hechos-en-python/. Memoria (RAM) 8,00 GB
https://blog.zerial.org/ficheros/Inf Tipo Sistema Sistema Operativo
orme_Ordenamiento.pdf. de 64 bits
http://progpython.blogspot.com.co
/2011/09/algoritmos-de-
ordenamiento-en-python-el.html
http://www.codegaia.com/index.p
hp/Complejidad_Algoritmos_de_
Ordenamiento
RESULTADOS ALCANZADOS

Vous aimerez peut-être aussi