Array, lista enlazada, pila, colas, búsqueda, clasificación, árbol, gráfico…
¿Tiene preguntas sobre por qué debo estudiar todas las cosas complicadas anteriores si no tiene absolutamente ningún uso en la vida real? ¿Por qué las empresas hacen preguntas relacionadas con estructuras de datos y algoritmos si no es útil en el trabajo diario?
Muchos programadores principiantes y experimentados evitan aprender estructuras de datos y algoritmos porque es complicado y piensan que todo lo anterior no sirve de nada en la vida real. Entonces, antes de discutir el tema, vamos a presentarle un problema simple y necesita encontrar la solución para eso.
Si necesita buscar su número de rollo en 20000 páginas de un documento PDF (los números de rollo están ordenados en orden creciente), ¿cómo lo haría?
- Si intenta buscarlo aleatoriamente o de forma secuencial, le llevará demasiado tiempo. Es posible que te sientas frustrado después de un tiempo.
- Puede probar otra solución que se proporciona a continuación…
- Ir a la página No. 10000
- Si su rollo no. no está allí, pero todos los demás rollo no. en esa pagina son menores que tu que
- Ir a la página No. 15000
- Todavía si tu rollo no. No está ahí. pero esta vez todos los demás rollo no. es mayor que tu.
- Ir a la página No. 12500
Continúe con el mismo proceso y en 30-40 segundos encontrará su número de rollo. Felicidades… acabas de usar el algoritmo de búsqueda binaria sin querer…
Este fue solo un ejemplo simple y es posible que haya entendido un poco por qué necesita aprender la estructura de datos y los algoritmos y su importancia en la vida real. Hay muchos ejemplos que puedes encontrar en tu vida diaria. Entonces, si cree que esta habilidad solo es importante para descifrar las entrevistas de las empresas basadas en productos, entonces está totalmente equivocado.
Del ejemplo anterior, podemos dar dos razones sencillas para aprender la estructura de datos y los algoritmos …
- Si quieres descifrar las entrevistas y entrar en las empresas basadas en productos
- Si te encanta resolver problemas complejos del mundo real.
Para descifrar las entrevistas de las principales empresas basadas en productos
¿Sabe que bajo el capó todos sus comandos SQL y Linux son algoritmos y estructuras de datos? Puede que no te des cuenta de esto, pero así es como funciona el software.
Las estructuras de datos y los algoritmos juegan un papel importante en la implementación del software y también en el proceso de contratación. Muchos estudiantes y profesionales se preguntan por qué las entrevistas de estas empresas se centran en DSA en lugar de preguntas específicas sobre lenguaje/marcos/herramientas. Vamos a explicar por qué sucede…
Cuando le pidas a alguien que tome una decisión por algo, el bueno podrá decirte “ Elijo hacer X porque es mejor que A, B de esta manera. Podría haber ido con C, pero sentí que esta era una mejor opción debido a esto “. En nuestra vida diaria, siempre vamos con esa persona que puede completar la tarea en poco tiempo con eficiencia y utilizando menos recursos. Lo mismo sucede con estas empresas. El problema que enfrentan estas empresas es mucho más difícil y en una escala mucho mayor. Los desarrolladores de software también tienen que tomar las decisiones correctas a la hora de solucionar los problemas de estas empresas.
El conocimiento de DS y Algo como tablas hash, árboles, gráficos y varios algoritmos contribuye en gran medida a resolver estos problemas de manera eficiente y los entrevistadores están más interesados en ver cómo los candidatos usan estas herramientas para resolver un problema. Al igual que un mecánico de automóviles necesita la herramienta adecuada para reparar un automóvil y hacer que funcione correctamente, un programador necesita la herramienta adecuada (algoritmo y estructura de datos) para que el software funcione correctamente. Entonces, el entrevistador quiere encontrar un candidato que pueda aplicar el conjunto correcto de herramientas para resolver el problema dado. . Si conoce las características de una estructura de datos en contraste con otra, podrá tomar la decisión correcta al elegir la estructura de datos correcta para resolver un problema.
Los ingenieros que trabajan en Google, Microsoft, Facebook, empresas similares a Amazon son diferentes a los demás y pagan más en comparación con otras empresas… pero ¿por qué?En estas empresas, la codificación es solo la implementación y toma aproximadamente el 20-30% del tiempo asignado a un proyecto. La mayor parte del tiempo se dedica a diseñar cosas con los mejores y óptimos algoritmos para ahorrar en los recursos de la empresa (servidores, potencia de cómputo, etc.). Esta es la razón principal por la que las entrevistas en estas empresas se centran en los algoritmos, ya que quieren que las personas que pueden pensar fuera de la caja diseñen algoritmos que puedan ahorrarle a la empresa miles de dólares. Youtube, Facebook, Twitter, Instagram, GoogleMaps, todos estos sitios tienen la mayor cantidad de usuarios en el mundo. Para manejar más usuarios en estos sitios, se requiere una mayor optimización y esa es la razón por la cual las empresas basadas en productos solo contratan candidatos que puedan optimizar su software según la demanda del usuario.
Ejemplo: suponga que está trabajando en una empresa de Facebook. Se le ocurre una solución óptima de un problema (como ordenar una lista de usuarios de la India) con una complejidad de tiempo de O(nLogn) en lugar de O(n^2) y asume que n para el problema aquí para la empresa en la vida real escenario es de 100 millones (suposición muy justa considerando que el número de usuarios registrados en Facebook supera los mil millones). nLogn sería 800 millones, mientras que n^2 sería 10^7 mil millones. En términos de costes, puede ver que la eficiencia se ha mejorado más de 10^7 veces, lo que podría suponer un gran ahorro en términos de coste y tiempo del servidor.
Ahora es posible que haya entendido que las empresas quieren contratar a un desarrollador inteligente que pueda tomar la decisión correcta y ahorrar recursos, tiempo y dinero de la empresa. Entonces, antes de dar la solución para usar una tabla Hash en lugar de una Lista para resolver un problema específico, piense cuidadosamente en la gran escala y en todos los escenarios de casos. Puede generar ingresos para la empresa o la empresa puede perder una gran cantidad de dinero.
Para resolver algunos problemas complejos del mundo real
¿Alguna vez te han regañado tus padres cuando no podías encontrar tu libro o tu ropa en tu desordenada habitación? Definitivamente sí… tus padres tienen razón cuando te dan el consejo de mantener todo en el lugar correcto para que la próxima vez puedas obtener tus cosas fácilmente. Aquí debe organizar y mantener todo (datos) en una estructura tal que siempre que necesite buscar algo lo obtenga fácilmente y lo antes posible. Este ejemplo da una idea clara de lo importante que es organizar o estructurar los datos en la vida real.
Ahora tomemos el ejemplo de una biblioteca. Si necesita encontrar un libro sobre la teoría de conjuntos en una biblioteca, irá primero a la sección de matemáticas y luego a la sección de teoría de conjuntos. Si estos libros no están organizados de esta manera y solo se distribuyen al azar, será frustrante encontrar un libro específico. Entonces, las estructuras de datos se refieren a la forma en que organizamos la información en nuestras computadoras. Los informáticos procesan y buscan la mejor manera en que podemos organizar los datos que tenemos, para que puedan procesarse mejor en función de la entrada proporcionada.
Muchos programadores novatos tienen esta pregunta sobre dónde usamos todo el material de la estructura de datos y los algoritmos en nuestra vida diaria y cómo es útil para resolver el problema complejo del mundo real. Necesitamos mencionar que ya sea que esté interesado en ingresar a las principales compañías gigantes tecnológicas o no, los conceptos de DSA aún lo ayudan mucho en su vida cotidiana. No nos creas… Consideremos algunos ejemplos…
- Facebook (Sí… estamos hablando de tu aplicación favorita). ¿Te imaginas que tus amigos en Facebook, amigos de amigos, amigos mutuos, todos pueden ser representados fácilmente por Graph? Relájate… siéntate un momento y piensa de nuevo… puedes aplicar un gráfico para representar las conexiones de tus amigos en Facebook.
- Si necesita mantener una baraja de cartas y organizarla correctamente, ¿cómo lo haría? Lo lanzarás al azar o dispondrás las cartas una sobre otra y de un mazo adecuado. Puede usar Apilar aquí para hacer una disposición adecuada de las cartas una sobre otra.
- Si necesita buscar una palabra en el diccionario, ¿cuál sería su enfoque? ¿Va página por página o abre alguna página y si no encuentra la palabra, abre una página antes o después de una abierta dependiendo del orden de las palabras en la página actual (búsqueda binaria)?
Los dos primeros fueron un buen ejemplo de cómo elegir la estructura de datos correcta para un problema del mundo real y el tercero es un buen ejemplo de cómo elegir el algoritmo correcto para resolver un problema específico en menos tiempo.
Todos los ejemplos anteriores le brindan una comprensión clara de cómo la organización de los datos es realmente importante en nuestra vida cotidiana. Organizar los datos en una estructura específica es realmente útil para ahorrar mucho tiempo y se vuelve más fácil manipularlos o usarlos. Lo mismo ocurre con el algoritmo… todos queremos ahorrar tiempo, energía y recursos. Todos queremos elegir el mejor enfoque para resolver los problemas en nuestra vida diaria. Existen muchos problemas en el mundo que pueden tardar horas o días en resolverse con la solución nativa, ¡también puede llevar años! ¡Puedes imaginar! mira esto: Importancia de la estructura de datos y los algoritmos
Estamos rodeados de muchos problemas complejos del mundo real para los que nadie tiene la solución. Observa los problemas a fondo y podrás ayudar a este mundo dando la solución que nadie ha dado antes.
La estructura de datos y los algoritmos ayudan a comprender la naturaleza del problema a un nivel más profundo y, por lo tanto, a una mejor comprensión del mundo.
Si desea saber más sobre por qué las estructuras de datos y los algoritmos, debe ver este video del Sr. Sandeep Jain (CEO y fundador, GeeksforGeeks).
Publicación traducida automáticamente
Artículo escrito por anuupadhyay y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA