-
Notifications
You must be signed in to change notification settings - Fork 0
/
Ordenamientos.py
83 lines (71 loc) · 2.29 KB
/
Ordenamientos.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# importamos las librerias
import random
from pyray import *
from raylib import KEY_ESCAPE, KEY_SPACE
# definimos las dimensiones de la ventana
ancho = 1700
alto = 800
# ingresamos la cantidad de elementos
n = int(input("Cantidad de elementos : "))
# creamos una lista con elementos aleatorios
lista_apoyo = []
lista_aleatoria = []
for i in range(n):
lista_aleatoria.append(random.randint(100, 800))
lista_apoyo.append(lista_aleatoria[i])
# definimos variables para la gráfica
ancho_barra = 10
espacio = int((ancho - n*ancho_barra) / (n - 1))
# definimos flags
flag = False
flag_2 = True
# iniciamos una ventana
init_window(ancho, alto, "QUICK SORT")
# definimos una funcion que grafique la lista
def graficar():
for i in range(len(lista_aleatoria)):
draw_rectangle(i*(ancho_barra+espacio), alto-lista_aleatoria[i], ancho_barra, lista_aleatoria[i], GREEN)
# definimos una funcion que ordene la lista con bubblesort
def bubbleSort():
for i in range(n-1):
clear_background(BLACK)
if lista_aleatoria[i] > lista_aleatoria[i+1]:
var_aux = lista_aleatoria[i]
lista_aleatoria[i] = lista_aleatoria[i+1]
lista_aleatoria[i+1] = var_aux
if is_key_pressed(KEY_ESCAPE):
flag_2 = False
break
# definimos una funcion que ordene la lista con insertionsort
def insertionSort():
for i in range(1, len(lista_aleatoria)):
clear_background(BLACK)
graficar()
key = lista_aleatoria[i]
j = i - 1
while j >= 0 and key < lista_aleatoria[j]:
lista_aleatoria[j+1] = lista_aleatoria[j]
j -= 1
clear_background(BLACK)
graficar()
lista_aleatoria[j+1] = key
end_drawing()
# definimos una funcion que ordene la lista con quicksort
def quickSort(array):
if len(array) <= 1:
return array
else:
pivot = array[0]
left = [x for x in array[1:] if x <= pivot]
right = [x for x in array[1:] if x > pivot]
return quickSort(left) + [pivot] + quickSort(right)
# mantenemos abierta la ventana iniciada
while not window_should_close():
clear_background(BLACK)
if is_key_pressed(KEY_SPACE) or flag:
flag = True
insertionSort()
graficar()
end_drawing()
# finalizamos la ventana
close_window()