Matplotlib fazer uso algoritmo de ordenação movimento
I. Introdução
algoritmo de computador da universidade que é cursos obrigatórios, enquanto algoritmo de classificação é o algoritmo o conteúdo dentro da prioridade. Aprender a programação algoritmos ajudam a melhorar a capacidade de melhorar o seu pensamento lógico, melhorar a qualidade do código. Mas realmente quer aprender o algoritmo é uma certa dificuldade. A principal razão é que o algoritmo é muito abstrata, não é fácil de entender.
Mas olhamos para este gráfico dinamicamente para atingir um bubble sort, não está se sentindo muito mais fácil de entender! ! !
Estes dias estão começando a aprender o conhecimento python, o módulo de aprendizagem Matplotlib acho que nós podemos usar essa estrutura para tornar os algoritmos de ordenação de visualizar o caminho, então para estudantes e iniciantes algoritmo não seria de muita ajuda. Arregaçar as mangas e fui em frente.
Em segundo lugar, preparar
- matplotlib instalação
# Windows 系统安装 Matplotlib
python -m pip install -U pip setuptools
python -m pip install matplotlib
Nota: por causa da velocidade da rede doméstica, e às vezes de download vezes fora, é recomendado o uso de fontes domésticas de pip
# Windows 系统安装 Matplotlib
python -m pip install -U pip setuptools -i https://pypi.douban.com/simple
python -m pip install matplotlib -i https://pypi.douban.com/simple
-
Um histograma
Quanto à forma de usar Matplotlib, você pode ver o tutorial novato: NumPy Matplotlib conteúdo. O que é particularmente grande. -
Deixe o movimento histograma
acima do conhecimento dentro tutorial apenas para desenhar um histograma de estática, precisamos algoritmo de ordenação para cada posição cambial são apresentados, para conseguir um efeito dinâmico. Na verdade, isso é relativamente simples, é o momento para falar sobre os resultados do desenho original apagada e redesenhada. Desenhe pausa ao longo de um determinado período de tempo, em seguida, entrar no próximo sorteio.
Não há muito a dizer, começar linha e código de barras! ! !
Em terceiro lugar, a fonte
Código de classificação algoritmo aqui eu não vou dizer, navegar na internet e você pode encontrar um monte. Aqui I usado o https://blog.csdn.net/woshichaoren1/article/details/86520233 Bowen dentro do código algoritmo, e em seguida, depois de ajustadas, como mostrado abaixo, em que um total de 4 mostra um algoritmo de visualização:
# -*- coding: utf-8 -*-
from matplotlib import pyplot as plt
import random
LIST_SIZE = 40
PAUSE_TIME = 4 / LIST_SIZE
# 冒泡算法
def bubble_sort(nums):
for i in range(len(nums) - 1):
for j in range(len(nums) - i - 1):
if nums[j] > nums[j + 1]:
nums[j], nums[j + 1] = nums[j + 1], nums[j]
plt.cla() # 清除内容
plt.bar(range(len(nums)), nums, align='center')
plt.bar(j, nums[j], color="r", align="center")
plt.bar(j + 1, nums[j + 1], color="r", align="center")
plt.pause(PAUSE_TIME)
plt.show()
# 插入排序
def insert_sort(nums):
for i in range(1, len(nums)):
pos = 0
for j in range(i - 1, -1, -1):
if nums[i] > nums[j]:
pos = j + 1
break
temp = nums[i]
for x in range(i, pos - 1, -1):
nums[x] = nums[x - 1]
nums[pos] = temp
plt.cla() # 清除内容
plt.bar(range(len(nums)), nums, align='center')
plt.bar(i, nums[i], color="r", align="center")
plt.bar(x, nums[x], color="g", align="center")
plt.bar(pos, nums[pos], color="r", align="center")
plt.pause(PAUSE_TIME)
plt.show()
# 选择排序
def selection_sort(nums):
for i in range(0, len(nums)):
min = i
for j in range(i + 1, len(nums)):
if nums[j] < nums[min]:
min = j
plt.cla() # 清除内容
plt.bar(range(len(nums)), nums, align='center')
plt.bar(i, nums[i], color="r", align="center")
plt.bar(j, nums[j], color="r", align="center")
plt.pause(PAUSE_TIME)
nums[i], nums[min] = nums[min], nums[i]
plt.show()
# 希尔排序
def shell_sort(nums):
step = len(nums)
while True:
step = int(step / 3 + 1)
for n in range(step):
for i in range(n + step, len(nums), step):
pos = n
for j in range(i - step, -1, -step):
if nums[i] > nums[j]:
pos = j + step
break
temp = nums[i]
for x in range(i, pos - step, -step):
plt.cla() # 清除内容
nums[x] = nums[x - step]
plt.bar(range(len(nums)), nums, align='center')
plt.bar(pos, nums[pos], color="r", align="center")
plt.bar(x, nums[x], color="r", align="center")
plt.pause(PAUSE_TIME)
nums[pos] = temp
if step <= 1:
break
plt.show()
if __name__ == "__main__":
nums = []
for i in range(LIST_SIZE):
nums.append(random.randint(0, 1000))
bubble_sort(nums)
# insert_sort(nums)
# selection_sort(nums)
# shell_sort(nums)
print(nums)
Em quarto lugar, os efeitos visuais
- algoritmo Bubble:
- inserção Sort
- seleção Classificar
- Classificar de hash