Hermano, aquí tienes un gran problema que necesita ser resuelto bastante rápido.
Comencemos con un ejemplo. Hace unos días, uno de mis mayores (supongamos que A) en la universidad me habló de un hecho. Otro senior (supongamos B) que está bastante experimentado en el desarrollo de aplicaciones se atascó en un código que fallaba cada vez que se ejecutaba en una máquina virtual. No sabía por qué, aunque comprobó posibles errores y el código parecía estar limpio. Entonces, B le pidió ayuda a A. A verificó el código completo y no cambió ningún algoritmo. En cambio, simplemente reemplazó la versión recursiva de un algoritmo con una versión iterativa de ese algoritmo. El código funcionó a las mil maravillas. FYI, esa era una aplicación basada en la web también en Android.
Entonces, ¿qué nos enseña la historia anterior? Nos enseña que a pesar de hacer todo bien, las cosas podrían colapsar si no usas las herramientas adecuadas. No puede usar el ordenamiento de burbujas cuando tiene 1 millón de elementos para ordenar. Tienes que usar quickSort. No puede usar una matriz para ordenar datos que tienen relación padre-hijo o vinculados de alguna otra manera. Necesitas arboles. Si desea mantener los mismos datos jerárquicos ordenados, necesita BST. Simplemente no puede declarar una gran matriz y ordenar los datos allí.
- ¿Qué son las estructuras de datos y los algoritmos en c ++?
- ¿Qué hay de malo con este código C?
- ¿Cómo funciona el algoritmo DeepMind?
- ¿Qué representa un estado en términos de programación dinámica?
- Noto que las estructuras de datos son difíciles de entender y asimilar con solo leerlas. ¿Qué tengo que hacer?
Centrémonos en otro punto importante. Cada estudiante universitario de CS tuvo que pasar por esos cursos de Estructura de datos y Algoritmo en la universidad. Y sinceramente, a la mayoría de ellos no les gustó. Pero esas son las estructuras comunes que se implementan en el código de la mayoría de los programadores de todo el mundo. Imagine que lo contrata una empresa que desarrolla aplicaciones web. Ahora se le pide que complete la publicación de un ingeniero de software en particular que escribió el código fuente de “whateverApp 1.0”. Ahora la empresa quiere producir la versión 1.1 y debe modificar cierta parte del código. Abre el código y ve que el código está escrito de una manera que implementa el árbol de búsqueda Binary y no tiene idea de qué es WTH. Entonces, ¿qué vas a hacer entonces? Dirígete a tu jefe y dile “Hola topDog, no me cago en la mierda de esos códigos. Puede ser que traiga a alguien más ahí abajo”. O llamarás al desarrollador anterior y le dirás: “Hola, soy el chico nuevo en tu trabajo anterior y un poco atascado con tu código. ¿Puedes echarme una mano? “-_-
Pasemos a la siguiente parte de su pregunta. ¿Qué “debería” hacer para deshacerse de esta situación? Bien, en mi caso, sigo un algoritmo.
1. Mire muchas simulaciones para entender cómo funcionan las cosas. Si está estudiando árboles, debe observar las simulaciones de todos los algoritmos de recorrido y algoritmos de búsqueda. Youtube acaba de cargarse con ellos. Elige el que prefieras y míralo varias veces hasta que realmente puedas hacerlo sin mirar el video.
2. Ahora construya árboles a partir de su propio conjunto de datos. Solo al azar. Luego realice las habilidades que ha aprendido en los árboles. Si tienes un buen amigo, entonces ve a él y pídele que realice esas operaciones en los árboles, luego compara tu respuesta con él. Si esas respuestas coinciden, ya está todo listo. de lo contrario, regrese al paso 1.
3. Ahora comience a codificarlos. Codifique cada uno de los algoritmos en su propia mano. Si está atascado, vea los códigos de Internet, tome su concepto, pero no los copie. Escribe tus códigos a tu manera.
4. Ya está todo listo. Mantenga la lista de algoritmos en su mente. Siempre que se enfrente a un problema, repita mentalmente la lista de algoritmos hasta que la descripción del problema coincida con uno de los algoritmos que conoce. De esa manera, no tiene que tropezar con una estructura de datos y preguntarse qué hacer o cómo empiezo a resolver.
Feliz codificación.