¿Se aplican las estructuras de datos y algoritmos para C / C ++ a JavaScript?

Sí y no 🙂

La implementación específica de algoritmos en C / C ++ generalmente pone énfasis en la administración de memoria, por ejemplo, asignando y desasignando memoria. Este detalle de implementación a menudo cambia la forma en que se estructura y presenta un algoritmo. Uno de mis libros de algoritmos favoritos hace esto: ‘ The Algorithm Design Manual ‘ de Steven Skiena. Incluso si no está interesado en C / C ++, es un libro excelente, la mejor exposición que he encontrado sobre cómo aplicar algoritmos ‘en el mundo real’.

Otro libro famoso para algoritmos y estructuras de datos es la serie de Donald Knuth ‘ The Art of Computer Programming ‘. El Dr. Knuth inventó su propio lenguaje ensamblador para un procesador hipotético para ilustrar los algoritmos. Este libro contiene ejemplos extremadamente profundos y completos. En mi opinión, si no estás interesado en el rigor académico, este libro se lee mejor de manera oportunista; tírelo hacia abajo y lea una sección muy específica cuando haya encontrado una estructura de datos o algoritmo y ya esté ‘calentado’ con un problema del mundo real. Esto le dará una mejor idea de cómo se ha desarrollado el algoritmo y el estado de la técnica que los investigadores han creado. Puede ser extremadamente desalentador intentar leer este libro directamente.

Los algoritmos se pueden expresar de una manera “pura” que abstrae su implementación. Esto a menudo se hace escribiendo en pseudocódigo. Creo que el libro más conocido de esta categoría es ‘ Introducción a los algoritmos ‘, de Cormen, Leiserson, Rivest y Stein (generalmente abreviado como CLRS). Esto le permite aprender algoritmos sin ningún detalle de implementación, con un enfoque en el concepto mismo. Esto no funciona para todos. Si bien creo que es importante descubrir por qué un algoritmo funciona en abstracto, a menudo es muy importante comprender las advertencias de implementar en un idioma en particular.

Así que finalmente volviendo al núcleo de su pregunta: C / C ++ a JS. La mejor práctica es extremadamente diferente para los dos, pero los conceptos centrales del algoritmo siguen siendo los mismos. Si tiene el tiempo y los recursos para aprender en C / C ++, descubrirá que sus habilidades se traducen a Javascript, pero solo si realmente se asegura de haber entendido la lección de cada algoritmo; sobre todo, no escriba a ciegas el código sin entender por qué lo has hecho. Si su interés principal es Javascript y tiene la opción de estudiar algoritmos directamente en Javascript, esa será una ruta más corta. Las habilidades que aprende al comprender algoritmos y estructuras de datos se transmitirán a otros idiomas y lo convertirán en un mejor programador general.

Ejemplo 7.1:
función LinkedList () {
this.length = 0;
Nodo de función (v, n) {
if ((typeof v === ‘number’) && ((n! = null && n instanceof LinkedList.Node) || n === null)) {
this.value = v;
this.next = n;
}
sino if ((typeof v === ‘number’) && n === undefined) {
this.value = v;
this.next = null;
}
más
lanzar un nuevo error (‘argumentos inválidos’);
}
LinkedList.Node = Node;
}

Ejemplo 7.4:
LinkedList.prototype.addHead = function (value) {
this.head = new LinkedList.Node (valor, this.head);
this.length ++;
};

Este es un ejemplo de código de ” Resolución de problemas en estructuras de datos y algoritmos usando JavaScript “. Este libro es fácil de seguir y está escrito para el punto de vista de la entrevista . Además, estos libros tienen el último capítulo sobre Diseño de sistemas , que también se requiere en las entrevistas.

Los enlaces de los libros en Amazon están abajo:

Algoritmos de estructuras de datos usando JavaScript.

.

Hay idiomas tradicionales para aprender DS y Algo. Los enlaces de los libros en Amazon están abajo:

1. Resolución de problemas en estructuras de datos y algoritmos utilizando C

2. Resolución de problemas en estructuras de datos y algoritmos usando C ++

3. Resolución de problemas en estructuras de datos y algoritmos utilizando Java

4. Resolución de problemas en estructuras de datos y algoritmos con C #

5. Resolución de problemas en estructuras de datos y algoritmos usando Python

6. Resolución de problemas en estructuras de datos y algoritmos con Visual Basic .Net