| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [View Raw Code] [Original HTTPS Page] |
Este repositorio contiene ejemplos basados en JavaScript de muchos algoritmos populares y estructuras de datos.
Cada algoritmo y estructura de datos tiene su propio LÉAME con explicaciones relacionadas y enlaces para lecturas adicionales (incluyendo algunas a vídeos de YouTube).
Léelo en otros idiomas: English, 简体中文, 繁體中文, 한국어, Polski, Français, Português
Una estructura de datos es una forma particular de organizar y almacenar datos en un ordenador para que pueda y modificarse de forma eficiente. Más concretamente, una estructura de datos es un conjunto de datos los valores, las relaciones entre ellos y las funciones u operaciones que se pueden aplicar a los datos.
P - Principiante, A - Avanzado
Un algoritmo es una especificación inequívoca de cómo resolver una clase de problemas. Es un conjunto de reglas que definen con precisión una secuencia de operaciones.
P - Principiante, A - Avanzado
Un paradigma algorítmico es un método o enfoque genérico que subyace al diseño de una clase de algoritmos. Es una abstracción superior a la noción de algoritmo, del mismo modo que un algoritmo es una abstracción superior a un programa de ordenador.
Instalar las dependencias
npm install
Correr ESLint
Es posible que desee ejecutarlo para comprobar la calidad del código.
npm run lint
Correr los tests
npm test
Correr tests por nombre
npm test -- 'LinkedList'
Campo de Juegos
Puede jugar con estructuras de datos y algoritmos en el archivo ./src/playground/playground.js y escribir pruebas para ello en ./src/playground/__test__/playground.test.js.
A continuación, simplemente ejecute el siguiente comando para comprobar si el código funciona como se espera:
npm test -- 'playground'
▶ Estructuras de datos y Algoritmos en YouTube
Orden de crecimiento de los algoritmos especificados en la notación O grande.
Fuente: Notación O grande, Hoja de atajos.
A continuación se muestra la lista de algunas de las notaciones de Big O más utilizadas y sus comparaciones de rendimiento frente a diferentes tamaños de los datos de entrada.
| Notación O grande | Cálculos para 10 elementos | Cálculos para 100 elementos | Cálculos para 1000 elementos |
|---|---|---|---|
| O(1) | 1 | 1 | 1 |
| O(log N) | 3 | 6 | 9 |
| O(N) | 10 | 100 | 1000 |
| O(N log N) | 30 | 600 | 9000 |
| O(N^2) | 100 | 10000 | 1000000 |
| O(2^N) | 1024 | 1.26e+29 | 1.07e+301 |
| O(N!) | 3628800 | 9.3e+157 | 4.02e+2567 |
| Estructura de Datos | Accesso | Busqueda | Inserción | Borrado | Comentarios |
|---|---|---|---|---|---|
| Coleción | 1 | n | n | n | |
| Stack | n | n | 1 | 1 | |
| Cola | n | n | 1 | 1 | |
| Lista Enlazada | n | n | 1 | 1 | |
| Tabla de Hash | - | n | n | n | En caso de función hash perfecta los costos serían O(1) |
| Búsqueda por Arbol Binario | n | n | n | n | En el caso de un árbol equilibrado, los costes serían O(log(n)) |
| Árbol B | log(n) | log(n) | log(n) | log(n) | |
| Árbol Rojo-Negro | log(n) | log(n) | log(n) | log(n) | |
| Árbol AVL | log(n) | log(n) | log(n) | log(n) | |
| Filtro de Bloom | - | 1 | 1 | - | Falsos positivos son posibles durante la búsqueda |
| Nombre | Mejor | Promedio | Pero | Memorya | Estable | Comentarios |
|---|---|---|---|---|---|---|
| Clasificación de Burbujas | n | n2 | n2 | 1 | Si | |
| Clasificación por Inserción | n | n2 | n2 | 1 | Si | |
| Clasificacion por Selección | n2 | n2 | n2 | 1 | No | |
| Classificacion por Pila | n log(n) | n log(n) | n log(n) | 1 | No | |
| Clasificacion por Fusion | n log(n) | n log(n) | n log(n) | n | Si | |
| Quick sort | n log(n) | n log(n) | n2 | log(n) | No | Quicksort es utilizqado con O(log(n)) espacio en el stack |
| Shell sort | n log(n) | depende de la secuencia de huecos | n (log(n))2 | 1 | No | |
| Clasificacion por Conteo | n + r | n + r | n + r | n + r | Si | r - mayor numero en arreglo |
| Radix sort | n * k | n * k | n * k | n + k | Si | k - largo de la llave más larga |
| Back | FazBrowse Home | New Git URL |