Cómo visualizar algunas estructuras de datos básicos y algoritmos

Esto es lo que recomiendo a todos IDeserve
Es una plataforma genial donde puede visualizar los algoritmos y las estructuras de datos dentro de ella.
Siento que es la mayor fuente de algoritmos que puedes visualizar. Es genial ver algoritmos ejecutados y animados sobre la marcha.

Visualización de algoritmos en matriz
Algoritmo de clasificación – Clasificación de burbujas (Algoritmo de clasificación – Clasificación de burbujas)
Algoritmo de clasificación – Selección de selección (Algoritmo de clasificación – Clasificación de selección)
Algoritmo de clasificación – Clasificación de inserción (Algoritmo de clasificación – Clasificación de inserción)
Algoritmo de clasificación – Clasificación de montón (Algoritmo de clasificación – Clasificación de montón)
Algoritmo de clasificación – Ordenar fusión (Algoritmo de clasificación – Ordenar fusión)
Clasificación de panqueques (clasificación de panqueques)
Cuente las frecuencias de los elementos de la matriz en el rango de 1 a n (Cuente las frecuencias de los elementos de la matriz en el rango de 1 a n)
Encuentra todas las permutaciones de una cadena (Encuentra todas las permutaciones de una cadena)
Búsqueda binaria en una matriz ordenada (Búsqueda binaria en una matriz ordenada)
Líderes en una matriz (Líderes en una matriz)
Encuentra un elemento de pico en una matriz (Encuentra un elemento de pico en una matriz)
Buscar pivote en una matriz rotada ordenada (Buscar pivote en una matriz rotada ordenada)
Encuentre un elemento en una matriz rotada ordenada (Encuentre un elemento en una matriz rotada ordenada)
Buscar elemento en una matriz rotada ordenada sin encontrar un pivote (Buscar un elemento en una matriz rotada ordenada sin encontrar un pivote)
Encuentra duplicados en una matriz entera (Encuentra duplicados en una matriz entera)
Subarray promedio máximo (Subarray promedio máximo)
Suma máxima de subarreglos (suma máxima de subarreglos)
Siguiente elemento mayor en una matriz (Siguiente elemento mayor en una matriz)
Número de Fibonacci (número de Fibonacci)
Rotar una matriz (Rotar una matriz)
Buscar elemento mayoritario en una matriz (Buscar elemento mayoritario en una matriz)
Encuentra la mediana de dos matrices ordenadas (Encuentra la mediana de dos matrices ordenadas)
Primer carácter no repetitivo en una cadena (Primer carácter no repetitivo en una cadena)
Reorganice los elementos en una matriz para colocar elementos positivos y negativos en orden alternativo (Reorganice los elementos en una matriz para colocar elementos positivos y negativos en orden alternativo)
Encuentre el siguiente número mayor usando los mismos dígitos (Encuentre el siguiente número mayor usando los mismos dígitos)
Subcadena más larga con caracteres no repetidos (Subcadena más larga con caracteres no repetidos)
Dado un conjunto con todos los elementos distintos, encuentre la longitud del subconjunto más largo que tiene elementos (no en ningún orden particular) que podrían formar una secuencia contigua (Dado un conjunto con todos los elementos distintos, encuentre la longitud del subconjunto más largo matriz que tiene elementos (no en ningún orden en particular) que podrían formar una secuencia contigua)
Encuentra la ruta de costo mínimo en una matriz (Encuentra la ruta de costo mínimo en una matriz)
Encuentre la longitud de la subsecuencia creciente más larga en una matriz (Encuentre la longitud de la subsecuencia creciente más larga en una matriz)
Encuentre la subsecuencia creciente más larga en una matriz O (n logn) (Subsecuencia creciente más larga O (n logn))
Encuentre la longitud de la subsecuencia bitónica más larga en una matriz (Encuentre la longitud de la subsecuencia bitónica más larga en una matriz)
Encuentra el número total de formas de hacer cambios usando un conjunto de monedas dado (Encuentra el número total de formas de hacer cambios usando un conjunto de monedas dado)
Número mínimo de monedas para realizar el cambio (Número mínimo de monedas para realizar el cambio)
Cuente todas las decodificaciones posibles de una secuencia de dígitos dada – (Cuente todas las decodificaciones posibles de una secuencia de dígitos dada)
Encuentre la subsecuencia creciente de longitud tres que tiene el producto máximo (Encuentre la subsecuencia creciente de longitud tres que tiene el producto máximo)
Encuentre una subsecuencia creciente de longitud tres que tenga el producto máximo | Enfoque optimizado (Encuentre una subsecuencia creciente de longitud tres que tenga el producto máximo | Enfoque optimizado)
Encuentre el índice de 0 para reemplazar para obtener la secuencia continua más larga de 1s (Encuentre el índice de 0 para reemplazar para obtener la secuencia continua más larga de 1s)
O (n) enfoque de tiempo para encontrar el índice de 0 para reemplazar para obtener la secuencia continua más larga de 1s (O (n) enfoque de tiempo para encontrar el índice de 0 para reemplazar para obtener la secuencia continua más larga de 1s)
Encuentre una matriz entera correspondiente a la cadena que especifica las transiciones de aumento / disminución (Encuentre una matriz entera correspondiente a la cadena que especifica las transiciones de aumento-disminución)
Dado un conjunto con todos los elementos distintos, encuentre la longitud del subconjunto más largo que tiene elementos (no en ningún orden particular) que podrían formar una secuencia contigua (Dado un conjunto con todos los elementos distintos, encuentre la longitud del subconjunto más largo matriz que tiene elementos (no en ningún orden en particular) que podrían formar una secuencia contigua)
Fusiona dos matrices ordenadas sin usar espacio adicional (Fusiona dos matrices ordenadas sin usar espacio adicional)
Problema de mochila 0-1 (Problema de mochila 0-1)
El problema del horizonte (El problema del horizonte)
Buscar una matriz ordenada (Buscar una matriz ordenada)
Compra y venta de acciones – 1 (Compra y venta de acciones – 1)
Compra y venta de acciones – 2 (Compra y venta de acciones – 2)
Problema de la mina de oro (problema de la mina de oro)
Problema de distribución de chocolates (problema de distribución de chocolates)
Atrapar agua de lluvia entre torres (Atrapar agua de lluvia entre torres)
Buscar subarrays de longitud mínima con suma K (Buscar subarrays de longitud mínima con suma K)

Visualización de algoritmos en árboles
Compruebe si un árbol binario es un árbol de búsqueda binaria (Compruebe si un árbol binario es un árbol de búsqueda binaria)
Compruebe si dos nodos son primos en un árbol binario (Compruebe si dos nodos son primos en un árbol binario)
Eliminar todos los nodos que se encuentran en la ruta que tiene una suma menor que k (Eliminar todos los nodos que se encuentran en la ruta que tiene una suma menor que k)
Árbol de búsqueda binaria | Inserción y búsqueda (árbol de búsqueda binaria | Inserción y búsqueda)
Árbol de búsqueda binaria | Eliminación (Árbol de búsqueda binaria | Eliminación)
Recorrido de orden de nivel de árbol binario (Recorrido de orden de nivel de árbol binario)
Imprimir vista inferior de un árbol binario (Imprimir vista inferior de un árbol binario)
Imprima la vista inferior de un árbol binario usando un recorrido de orden de nivel (Imprima la vista inferior de un árbol binario usando un recorrido de orden de nivel)
Compruebe si un árbol binario está equilibrado o no (Compruebe si un árbol binario está equilibrado o no)
Compruebe si un árbol binario es un subárbol de otro árbol binario en el espacio O (1) (Compruebe si un árbol binario es un subárbol de otro árbol binario en el espacio O (1))
Compruebe si un árbol binario es un subárbol de otro árbol binario en el tiempo O (n) (Compruebe si un árbol binario es un subárbol de otro árbol binario en el tiempo O (n))
Compruebe si todos los nodos internos de BST tienen un solo hijo sin árbol de construcción (Compruebe si todos los nodos internos de BST tienen solo un hijo sin árbol de construcción)
Compruebe si un determinado árbol binario es simétrico o no (Compruebe si un determinado árbol binario es simétrico o no)
Compruebe si dos árboles de búsqueda binarios son idénticos dadas sus representaciones de matriz (Compruebe si dos árboles de búsqueda binarios son idénticos dadas sus representaciones de matriz)
Compruebe si dos árboles de búsqueda binarios son idénticos dadas sus representaciones de matriz | Conjunto 2 (Compruebe si dos árboles de búsqueda binarios son idénticos dadas sus representaciones de matriz | Conjunto 2)
Compruebe si el árbol n-ary dado es un árbol simétrico o no (Compruebe si el árbol n-ary dado es un árbol simétrico o no)
Compruebe si dos árboles binarios son idénticos (Compruebe si dos árboles binarios son idénticos)
Convertir un árbol binario en una lista doblemente vinculada (Convertir un árbol binario en una lista doblemente vinculada)
Convierta una lista doblemente ordenada en un árbol de búsqueda binaria equilibrada (Convierta una lista doblemente ordenada en un árbol de búsqueda binaria equilibrada)
Crear un árbol de búsqueda binaria equilibrado a partir de una matriz ordenada (Crear un árbol de búsqueda binaria equilibrado a partir de una matriz ordenada)
Compruebe si un árbol binario está completo o no (Compruebe si un árbol binario está completo o no)
Compruebe si un árbol binario es un árbol binario completo o no (Compruebe si un árbol binario es un árbol binario completo o no)
Construir árbol binario a partir de recorridos de orden y postorder (Construir árbol binario a partir de recorridos de orden y postorder)
Construir árbol binario a partir de recorridos en orden y preorden (Construir árbol binario a partir de recorridos en orden y preorden)
Construya el árbol binario a partir de su representación de matriz principal (Construya el árbol binario a partir de su representación de matriz principal)
Árbol AVL | Conceptos básicos (árbol AVL | Conceptos básicos)
Árbol AVL | Inserción (árbol AVL | Inserción)
Árbol AVL | Eliminación (árbol AVL | Eliminación)
Convertir árbol binario en árbol de búsqueda binaria (Convertir árbol binario en árbol de búsqueda binaria)
Encuentre la profundidad del nodo de hoja de nivel impar más profundo (Encuentre la profundidad del nodo de hoja de nivel impar más profundo)
Suma diagonal de un árbol binario. (Suma diagonal de un árbol binario).
Encuentre la altura del árbol binario desde su representación de matriz primaria (Encuentre la altura del árbol binario desde su representación de matriz primaria)
Encuentra la suma de todas las hojas izquierdas de un árbol binario (Encuentra la suma de todas las hojas izquierdas de un árbol binario)
Encuentre el piso y el techo de un elemento del conjunto de datos dado usando el árbol de búsqueda binario (Encuentre el piso y el techo de un elemento del conjunto de datos dado usando el árbol de búsqueda binario)
Recupere un árbol de búsqueda binaria si se intercambian las posiciones de dos nodos. (Recupere un árbol de búsqueda binaria si se intercambian las posiciones de dos nodos).
Sucesor en orden de un nodo en un árbol binario (Sucesor en orden de un nodo en un árbol binario)
Recorrido en orden de un árbol binario (Recorrido en orden de un árbol binario)
Imprimir vista izquierda de un árbol binario (Imprimir vista izquierda de un árbol binario)
Ancestro común más bajo de 2 nodos en un árbol binario (Ancestro común más bajo de 2 nodos en un árbol binario)
Profundidad mínima de un árbol binario (Profundidad mínima de un árbol binario)
Convertir un árbol binario en su árbol espejo (Convertir un árbol binario en su árbol espejo)
Convierta el árbol n-ary dado a su imagen especular (Convierta el árbol n-ary dado a su imagen especular)
Estructura de datos de Trie | Insertar y buscar (Estructura de datos Trie | Insertar y buscar)
Estructura de datos de Trie | Eliminar (Estructura de datos Trie | Eliminar)
Coincidencia de patrones usando Trie (Coincidencia de patrones usando Trie)
Coincidencia de prefijo más larga con Trie (Coincidencia de prefijo más larga con Trie)
Recorrido de orden posterior de un árbol binario (Recorrido de orden posterior de un árbol binario)
Pedido anticipado de un árbol binario (pedido anticipado de un árbol binario)
Imprima todas las rutas de raíz a hoja de un árbol binario (Imprima todas las rutas de raíz a hoja de un árbol binario)
Imprimir árbol binario en orden vertical (Imprimir árbol binario en orden vertical)
Imprima todos los nodos de un árbol binario que no tengan hermanos (Imprima todos los nodos de un árbol binario que no tengan hermanos)
Eliminar todos los medios nodos de un árbol binario dado (Eliminar todos los medios nodos de un árbol binario dado)
Eliminar los nodos del árbol de búsqueda binario que están fuera del rango dado (Eliminar los nodos del árbol de búsqueda binario que están fuera del rango dado)
Imprimir vista derecha de un árbol binario (Imprimir vista derecha de un árbol binario)
Serializar y deserializar un árbol de búsqueda binaria usando el recorrido de orden posterior (Serializar y deserializar un árbol de búsqueda binaria usando el recorrido de orden posterior)
Serializar y deserializar un árbol de búsqueda binaria (Serializar y deserializar un árbol de búsqueda binaria)
Encuentre el tamaño del BST más grande en un árbol binario (Encuentre el tamaño del BST más grande en un árbol binario)
Imprima la vista superior de un árbol binario usando el recorrido de orden de nivel (Imprima la vista superior de un árbol binario usando el recorrido de orden de nivel)
Imprimir vista superior de un árbol binario (Imprimir vista superior de un árbol binario)
Número total de posibles árboles de búsqueda binaria con n teclas (Número total de posibles árboles de búsqueda binaria con n teclas)
Dada una secuencia de palabras, agrupe todos los anagramas e imprímalos. (Dada una secuencia de palabras, agrupe todos los anagramas e imprímalos).

Visualización de algoritmos en cadenas
Word Break Problem (Problema de salto de palabra)
Invertir palabras en una cadena (Invertir palabras en una cadena)
Encuentra todas las permutaciones de una cadena (Encuentra todas las permutaciones de una cadena)
Encuentra la distancia mínima de edición entre dos cadenas dadas (Encuentra la distancia mínima de edición entre dos cadenas dadas)
Para imprimir el número máximo de As usando las cuatro teclas dadas. (Para imprimir el número máximo de As usando las cuatro teclas dadas).
Verificar paréntesis balanceados en una cadena (Verificar paréntesis balanceados en una cadena)
Distintas cadenas binarias de longitud n sin 1s consecutivos (Distintas cadenas binarias de longitud n sin 1s consecutivos)
Encontrar secuencias de ADN repetidas de 10 letras. (Encontrar secuencias de ADN repetidas de 10 letras).
Primer carácter no repetitivo en una cadena (Primer carácter no repetitivo en una cadena)
Agrupe todos los anagramas de una serie dada de cadenas | Conjunto 1 (Agrupe todos los anagramas a partir de una determinada serie de cadenas | Conjunto 1)
Subsecuencia común más larga (Subsecuencia común más larga)
Subcadena común más larga (Subcadena común más larga)
La secuencia palindrómica más larga (la secuencia palindrómica más larga)
Subcadena palindrómica más larga (subcadena palindrómica más larga)
Subcadena más larga con caracteres no repetidos (Subcadena más larga con caracteres no repetidos)
Palindrome Min Cut (Palindrome Min Cut)
Palindrome más corto (Palindrome más corto)
El cómputo de matriz de sufijo de prefijo más largo en el algoritmo de coincidencia de patrones KMP. (El cálculo de matriz de sufijo de prefijo más largo en el algoritmo de coincidencia de patrones KMP).
El algoritmo Knuth Morris Pratt para la coincidencia de patrones. (El algoritmo Knuth Morris Pratt para la coincidencia de patrones).

Visualización de algoritmos en listas enlazadas
Invertir una lista vinculada: iterativa (Invertir una lista vinculada: iterativa)
Invertir una lista vinculada – Recursiva (Invertir una lista vinculada – Recursiva)
Fusionar dos listas vinculadas ordenadas (Fusionar dos listas vinculadas ordenadas)
Buscar intersección de dos listas vinculadas (Buscar intersección de dos listas vinculadas)
Encuentre la intersección de dos listas enlazadas – O (m + n) Complejidad de tiempo y O (1) Complejidad espacial (Encuentre intersección de dos Listas enlazadas – O (m + n) Complejidad de tiempo y O (1) Complejidad de espacio)
Detecta un bucle en una lista vinculada y encuentra el nodo donde comienza el bucle. (Detecte un bucle en una lista vinculada y encuentre el nodo donde comienza el bucle).
Convertir un árbol binario en una lista doblemente vinculada (Convertir un árbol binario en una lista doblemente vinculada)
Convierta una lista doblemente ordenada en un árbol de búsqueda binaria equilibrada (Convierta una lista doblemente ordenada en un árbol de búsqueda binaria equilibrada)
Implementación de caché LRU (Implementación de caché LRU)

Visualización de algoritmos en gráfico
Algoritmo de Bellman-Ford (Algoritmo de Bellman-Ford)
Algoritmo de ruta más corta de Dijkstra (algoritmo de ruta más corta de Dijkstra)
Problema de círculos de amigos – Teoría de gráficos (Problema de círculos de amigos – Teoría de gráficos)
Clasificación topológica de un gráfico acíclico dirigido. (Clasificación topológica de un gráfico acíclico dirigido).

Visualización para algoritmos de programación dinámica
Word Break Problem (Problema de salto de palabra)
Encuentra la ruta de costo mínimo en una matriz (Encuentra la ruta de costo mínimo en una matriz)
Suma máxima de subarreglos (suma máxima de subarreglos)
Encuentra el número total de formas de hacer cambios usando un conjunto de monedas dado (Encuentra el número total de formas de hacer cambios usando un conjunto de monedas dado)
Número mínimo de monedas para realizar el cambio (Número mínimo de monedas para realizar el cambio)
Encuentre la longitud de la subsecuencia creciente más larga en una matriz (Encuentre la longitud de la subsecuencia creciente más larga en una matriz)
Encuentre la longitud de la subsecuencia bitónica más larga en una matriz (Encuentre la longitud de la subsecuencia bitónica más larga en una matriz)
Cuente todas las decodificaciones posibles de una secuencia de dígitos dada (Cuente todas las decodificaciones posibles de una secuencia de dígitos dada)
Para imprimir el número máximo de As usando las cuatro teclas dadas. (Para imprimir el número máximo de As usando las cuatro teclas dadas).
Encuentra la distancia mínima de edición entre dos cadenas dadas (Encuentra la distancia mínima de edición entre dos cadenas dadas)
Número total de posibles árboles de búsqueda binaria con n teclas (Número total de posibles árboles de búsqueda binaria con n teclas)
Problema de mochila 0-1 (Problema de mochila 0-1)
Subsecuencia común más larga (Subsecuencia común más larga)
Subcadena común más larga (Subcadena común más larga)
Subsecuencia creciente más larga O (n logn) (Subsecuencia creciente más larga O (n logn))
La secuencia palindrómica más larga (la secuencia palindrómica más larga)
Subcadena palindrómica más larga (subcadena palindrómica más larga)
Número de Fibonacci (número de Fibonacci)
Palindrome Min Cut (Palindrome Min Cut)
Palindrome más corto (Palindrome más corto)
Problema de suma de subconjunto (problema de suma de subconjunto)
Problema de la mina de oro (problema de la mina de oro)

Algunos de los recursos que me gustan son:
1- Visualización de estructura de datos
Visualización de las estructuras de datos más importantes. En el mismo enlace también hay algunas visualizaciones agradables en Algoritmos Gráficos como por ejemplo:

El camino más corto de Dijkstra
Árbol de expansión de costo mínimo de Prim
Clasificación topológica (utilizando la matriz Indegree)
Clasificación topológica (usando DFS)
Floyd-Warshall (todos los pares de caminos más cortos)
Algoritmo de árbol de expansión de costo mínimo de Kruskal

2- Otro es visualizar estructuras de datos y algoritmos a través de la animación.
que tiene un gran diseño gráfico.

3- Me gusta mucho también la página en ocks.org de Mike Bostock. Todo es visualización de algoritmos en Javascript y es sorprendente. Se parece al trabajo de arte.

Aquí encontrará más información sobre la visualización de algoritmos y estructuras de datos de Alket Cecaj sobre algoritmos y fusión de datos

Esa es una buena página a la que has vinculado. (Visualización de estructura de datos)
El código fuente para esas visualizaciones es javascript y está disponible en su navegador web. Estoy usando Chrome y esto es lo que hice:

1) Elija el algoritmo del árbol de búsqueda binaria.
2) Haga clic derecho en el gran espacio en blanco donde muestra el árbol y seleccione “Ver código fuente”
3) En la parte superior de ese archivo puede ver todos los archivos javascript que se importan.
4) Si mira animationMain.js, puede ver que están usando HTML5 Canvas. Página en usfca.edu Busque initCanvas.
5) qt tiene algo similar a QT Canvas llamado Graphics View Framework

Entonces, esto es lo que recomendaría: revise todo ese código javascript en el enlace que publicó. Tiene una licencia que le permite copiarlo y modificarlo siempre que atribuya al autor original. Comprenda cómo funciona y luego traduzca esa funcionalidad a QT usando el lenguaje que desee para controlar QT. No es tan simple porque HTML5 Canvas es ciertamente diferente de QT Graphics View Framework, pero si lee el código y los documentos de Canvas, debería poder entender cómo cambiar eso a la semántica de QT. Muchos de los archivos javascript que usan solo tendrán que traducirse al idioma, ya que no están usando ninguna biblioteca.

Si responde a eso diciendo: “eso es demasiado fácil porque solo estoy copiando lo que ya hicieron”, le diré que no se preocupe por eso. Si realmente logra traducir todo ese código javascript a c ++ o algún otro lenguaje que esté usando con QT y desarrolle una pantalla QT con una funcionalidad similar, seguramente aprenderá mucho. La mayor parte del código allí es sobre animación y gráficos de todos modos, el código del algoritmo es la parte simple.

Estoy construyendo una herramienta de visualización similar usando Javascript.

https://rocksvashi.github.io/Dat

Eche un vistazo, este proyecto está alojado en github, así que siéntase libre de contribuir bifurcando.